fopen, sleep, fopen - два раза считывает одинаковый файл

W.M.

Новичок
fopen, sleep, fopen - два раза считывает одинаковый файл

Столкнулся со следующей проблемой: скрипт открывает файл через fopen(), считывает данные, закрывает файл, ждет определенное время (за которое файл изменяется), снова открывает и по идее должен был бы открыть уже измененный файл и соответственно считать добавленные данные (в моем случае - логи сервера, новые строки). Этого не происходит. То есть, какую бы задержку с помощью sleep(); я не делал, и как бы и чем бы не менял файл в процессе sleep(), сколько бы раз потом его не считывал, все равно считается заново та первоначальная версия, открытая в первый раз первым запуском fopen().
Такое происходит и на windows, и на freebsd.

Кто-нибудь знает в чем может быть проблема и как ее решить?

Спасибо!
 

W.M.

Новичок
Автор оригинала: Maxim Matyukhin
покажи как считываешь
fclose() и clearstatcache() делаешь ?
fclose() конечно делал, а вот clearstatcache() не делал. Сейчас попробывал - без нее считывает одинаково файл измененный, а с ней - считывает уже корректно измененный файл, то есть изменяется и размер и время создания естественно. Я так и предполагал что где-то в кеше там проблема, только не смог найти ссылки на функцию в хелпе и в комментариях юзеров к хелпу. Большое спасибо, выручил!!

2 admin

уже разобрался, спасибо!
 

Demiurg

Guest
Как всегда в подобных темах водникает вопрос:
А зачем ?
 

W.M.

Новичок
Автор оригинала: Demiurg
Как всегда в подобных темах водникает вопрос:
А зачем ?
Зачем что? Зачем такой вопрос задавать? Или что? :)

Извиняюсь за оффтоп.
 

Demiurg

Guest
>Зачем что? Зачем такой вопрос задавать? Или что?
спрошу по другому: какая задача привела к столь странным методам решения.
 

W.M.

Новичок
Задача состояла в следующем - искать в логе сервера определенную строку, если ее там не окажется, ожидать некоторое время (необходимое чтобы она там появилась, если она там появится вообще), и снова искать эту строку.

Подход я выбрал самый простой какой мог придумать (и едиснтвенный который смог :) ). Однако он не срабатывал, потому что (см. выше).

Теперь все работает, большое спасибо :)
 
Сверху