PHP filemtime()不起作用-缓存问题?

时间:2018-12-08 22:44:15

标签: php caching

我正在从JavaScript / HTML应用中POST执行的PHP文件中调用filemtime()。即使我使用文本编辑器编辑测试文件时,它也会每两秒钟为单独的测试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文件名,每2秒使用setInterval。

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

已添加:

在Firefox,Chrome,Opera和Edge中,行为相同。

2 个答案:

答案 0 :(得分:0)

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

  

注意:此功能的结果将被缓存。有关更多详细信息,请参见clearstatcache()。

听起来好像Windows正在做一些写缓存...

另一方面,

stat()有一个附加说明:

  

注意:

     

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

也许值得检查统计信息输出。

修改

也许这是一个错误,或者Windows运行不正常,但是您也可以使用Windows命令显示DTM来进行shell_exec

答案 1 :(得分:0)

新闻:事实证明这是我应用中的一个常见错误。我复制了我的Ajax调用,却忘记了对其进行编辑以应用于测试文件。因此,它改为应用于我的一个应用程序文件,并且DTM仅在我编辑该应用程序文件(FTAdjust.js)时得到更新。

当我指定正确的测试文件时,每次在另一个进程中对其进行编辑时,DTM都会更新得很好。

有时即使面对自己的虫子,也很难找到自己的虫子!我一直在寻找其他地方,但错误在哪里。

有没有办法从Stack Overflow中删除线程,因为它与其他线程无关?