首页 > 解决方案 > PHP filemtime() 不工作 - 缓存问题?

问题描述

我正在从 JavaScript/HTML 应用程序的 POST 执行的 PHP 文件中调用 filemtime()。即使我使用文本编辑器编辑测试文件并且我可以在本地文件系统中看到其 DTM 更改,它也会每两秒为单独的测试 HTML 文件返回相同的时间戳。

如果我重新加载整个应用程序 (Ctrl+F5),报告的时间戳保持不变。有时(4 小时后一次)时间戳会发生变化,但我不知道是什么导致了这种情况发生。

我的代码的 PHP 部分如下所示:

clearstatcache(true,$FileArg);
$R=filemtime($FileArg);
if ($R===false)
    echo "error: file not found";
else
    echo $R;

此代码由同步 Ajax 调用,仅给出其 PHP 文件名,每 2 秒使用一次 setInterval。

Windows 10 Home,在本地运行以进行 HTTP 访问的 Apache 2.4.33,PHP 7.0.30。

添加:

Firefox、Chrome、Opera 和 Edge 中的行为相同。

标签: phpcaching

解决方案


结果被缓存: http: //php.net/manual/en/function.filemtime.php

注意:此函数的结果被缓存。有关详细信息,请参阅 clearstatcache()。

这几乎听起来像 Windows 正在做一些写缓存......

另一方面, stat() 有一个附加说明:

笔记:

请注意,时间分辨率可能因文件系统而异。

也许值得检查统计输出。

编辑

也许这是一个错误,或者 Windows 玩得不好,但你也可以shell_exec使用显示 DTM 的 Windows 命令来做。


推荐阅读