PHP filemtime () не работает — проблема с кешем?

Я вызываю 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.

-1

Решение

Результаты кэшируются: http://php.net/manual/en/function.filemtime.php

Примечание. Результаты этой функции кэшируются. Смотрите clearstatcache () для более подробной информации.

Похоже, что Windows делает некоторые записи кэширования …

stat (), с другой стороны, имеет дополнительное примечание:

Замечания:

Обратите внимание, что разрешение по времени может отличаться в разных файловых системах.

Возможно стоит проверить вывод статистики.

редактировать

Может быть, это ошибка, или Windows не играет хорошо, но вы также можете сделать shell_exec с командой Windows, показывающей DTM.

0

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

Новостиоказывается, это обычная ошибка в моем приложении. Я скопировал свой вызов Ajax и забыл отредактировать его, чтобы применить к тестовому файлу. Таким образом, он применялся к одному из моих файлов приложения, а DTM обновлялся только тогда, когда я редактировал этот файл приложения (FTAdjust.js).

Когда я указываю правильный тестовый файл, DTM прекрасно обновляется каждый раз, когда я редактирую его в другом процессе.

Иногда бывает трудно найти собственную ошибку, даже если она смотрит в лицо! Я продолжал искать везде, но там, где была ошибка.

Есть ли способ удалить поток из переполнения стека, так как он не имеет отношения к другим?

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector