filemtime возвращает одно и то же значение до и после изменения файла

Я пытаюсь получить время последнего изменения файла до и после записи в него с помощью fwrite. Но я получаю те же значения по какой-то причине.

<?php
$i = filemtime('log.txt');
echo gmdate("h:i:s", $i);
echo "<br/>";
$e=fopen('log.txt', 'w');
fwrite($e, "well well well");
$j = filemtime('log.txt');
echo gmdate("h:i:s", $j);

?>

Теперь я модифицирую log.txt с помощью текстового редактора примерно за минуту до запуска этого скрипта. Так что я должен получить разницу в 40-60 секунд. Если бы кто-то мог указать на то, что здесь происходит, это было бы очень признательно. Благодарю.

4

Решение

Документация filemtime утверждает, что результаты этой функции кэшируются. Может быть, вы можете попробовать это с clearstatcache:

<?php
$i = filemtime('log.txt');
echo gmdate("h:i:s", $i);
echo "<br/>";
$e=fopen('log.txt', 'w');
fwrite($e, "well well well");
clearstatcache();
$j = filemtime('log.txt');
echo gmdate("h:i:s", $j);
4

Другие решения

Попробуйте добавить fclose после fwrite:

<?php
$i = filemtime('log.txt');
echo gmdate("h:i:s", $i);
echo "<br/>";
$e=fopen('log.txt', 'w');
fwrite($e, "well well well");
fclose($e);
$j = filemtime('log.txt');
echo gmdate("h:i:s", $j);
?>
0

По вопросам рекламы [email protected]