|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
Всем привет. Есть задача: раз в день парсить тяжеленный лог и вытаскивать оттуда данные "за сегодня", обрабатывать условиями, и вносить в базу. Как грамотно организовать чтение не открывая весь файл. У меня только один способ в голове: перед чтением файла брать дату из последней строки, записывать ее в отдельный файл, а в следующей раз начинать чтение с этой даты. Однако я не уверен, хороший ли это способ, вдруг есть что-то проще и эффективнее. Подскажите достойное решение, пожалуйста! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 19:23 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
andrey10, Я такое когда-то делал через размер файла. Хранил отдельно его размер, и при каждом чтении читал с этого места, а потом обновлял хранимое число. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 19:26 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
andrey10, а ротацию лога настроить не вариант вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 19:37 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
bga83а ротацию лога настроить не вариант вообще?В моем случае периоды чтения и ротации не совпадали. Читать надо было часто, раз в несколько минут, а ротация была раз в сутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 19:42 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
Вариант с сохранением последней позиции в файле (в байтах) и потом fseek на неё - вполне годный. Но, для лог-файлов надо проверять, что его не отротировали, иначе записи будут пропускаться при чтении из нового файла. Для проверки можно использовать номер inode, если он изменился, то читать файл с начала. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 22:27 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
А сесть на пайп и читать лог вообще не давая ему записаться в файл - не вариант?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2016, 22:52 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА сесть на пайп и читать лог вообще не давая ему записаться в файл - не вариант?.. Действительно, через watch будет лучше всего (если вы его имели в виду). Направляю нужные строки в другой файл и всё, да и еще данные в реальном времени можно отображать в интерфейсе. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2016, 13:15 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
andrey10Действительно, через watch будет лучше всего (если вы его имели в виду). Вообще-то я имел в виду mkfifo и иже с ним типа такого: http://superuser.com/questions/366511/io-redirection-with-mkpipe-for-logging-purposes Всё, что левая программа пишет в псевдофайл, сразу поступает в программу, которая из него читает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2016, 13:35 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
Например так: Код: sql 1. 2. 3.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2016, 13:39 |
|
Чтение новых записей из большого файла
|
|||
---|---|---|---|
#18+
andrey10. Как грамотно организовать чтение не открывая весь файл. У Открыть половину файла невозможно. Либо весь, либо ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2016, 19:42 |
|
|
start [/forum/topic.php?fid=25&msg=39153340&tid=1481805]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 289ms |
0 / 0 |