PHP filemtime () не работает - проблема с кешем? - PullRequest
0 голосов
/ 09 декабря 2018

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

Thisкод вызывается синхронным Ajax с заданным только его именем в PHP, используя setInterval каждые 2 секунды.

Windows 10 Home, Apache 2.4.33, работающий локально для доступа по HTTP, PHP 7.0.30.

ДОБАВЛЕНО:

Поведение в Firefox, Chrome, Opera и Edge одинаково.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

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

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

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

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

0 голосов
/ 09 декабря 2018

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

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

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

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

Примечание:

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

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

edit

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...