Я вызываю filemtime () из файла PHP, выполняемого POST из приложения JavaScript / HTML. Он возвращает одну и ту же метку времени для отдельного тестового HTML-файла каждые две секунды, даже когда я редактирую тестовый файл с помощью текстового редактора и вижу изменение DTM в локальной файловой системе.
Если я перезагружу все приложение (Ctrl + F5), указанная временная метка останется прежней. Время от времени (один раз после 4 часов) метка времени меняется, но я не знаю, что делает это возможным.
PHP-часть моего кода выглядит так:
clearstatcache(true,$FileArg);
$R=filemtime($FileArg);
if ($R===false)
echo "error: file not found";
else
echo $R;
Этот код вызывается синхронным Ajax с заданным только именем PHP-файла, используя setInterval каждые 2 секунды.
Windows 10 Home, Apache 2.4.33, работающий локально для доступа по HTTP, PHP 7.0.30.
ДОБАВЛЕНО:
Поведение одинаково в Firefox, Chrome, Opera и Edge.
Результаты кэшируются: http://php.net/manual/en/function.filemtime.php
Примечание. Результаты этой функции кэшируются. Смотрите clearstatcache () для более подробной информации.
Похоже, что Windows делает некоторые записи кэширования …
stat (), с другой стороны, имеет дополнительное примечание:
Замечания:
Обратите внимание, что разрешение по времени может отличаться в разных файловых системах.
Возможно стоит проверить вывод статистики.
редактировать
Может быть, это ошибка, или Windows не играет хорошо, но вы также можете сделать shell_exec
с командой Windows, показывающей DTM.
Новостиоказывается, это обычная ошибка в моем приложении. Я скопировал свой вызов Ajax и забыл отредактировать его, чтобы применить к тестовому файлу. Таким образом, он применялся к одному из моих файлов приложения, а DTM обновлялся только тогда, когда я редактировал этот файл приложения (FTAdjust.js).
Когда я указываю правильный тестовый файл, DTM прекрасно обновляется каждый раз, когда я редактирую его в другом процессе.
Иногда бывает трудно найти собственную ошибку, даже если она смотрит в лицо! Я продолжал искать везде, но там, где была ошибка.
Есть ли способ удалить поток из переполнения стека, так как он не имеет отношения к другим?