fgets() на живом логе

grigori

( ͡° ͜ʖ ͡°)
Команда форума
fgets() на живом логе

привет
кто знает, можно ли юзать fgetcsv() для чтения данных из файла живого (открытого на запись) лога?

запись в лог делается демоном и мне надо как-то забирать эту информацию в реальном времени
я боюсь конкурентности и чтения половины строки
 

Alexandre

PHPПенсионер
запись в лог делается демоном и мне надо как-то забирать эту информацию в реальном времени
я боюсь конкурентности и чтения половины строки
все зависит от того, какие блокировки осуществляются при записи. как правило, если специальных блокировок не ставить, то ось скидывает все через пул, а в все записи из пула производятся атомарно, т.е. это все записи будут записаны "полными".
ты не сможешь прочитать запись и одновременно в нее писать, по этому все записи должны быть считаны "полными", но проверить лишний раз всегда не мешает.
 

Alexandre

PHPПенсионер
глянул исходники, вроде должно работать
там све завернуто через стримы,

проверить думаю можно запустив два процесса одновременно, один пишет каждые четверть сек в лог, через открытие/закрытие файла, второй с такой же частотой читет и пишет в идр лог.
потом файлы сравниваешь.

-~{}~ 09.02.10 23:06:

огласи тесты, саморму интересно
 

vovanium

Новичок
Тестил подобные варианты, скрипт который пишет лог в реальном времени (т.е. файл постоянно открыт для записи, и обновляется несколько десятков раз в секунду), другой скрипт читает лог 4-5 раз в секунду, и выводит результат в браузер, никаких проблем замечено не было.

А проверял добавлением в строку контрольной суммы, т.е. если бы строка прочиталась не полностью, выдало бы ошибку.
 
Сверху