首页 文章

PHP filemtime()无法正常工作 - 缓存问题?

提问于
浏览
-1

我从一个来自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

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

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

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

    另一方面,stat()还有一个注释:

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

    也许值得检查统计输出 .

    edit

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

  • 0

    News :结果证明这是我应用中的普通错误 . 我复制了我的Ajax调用,忘了编辑它以应用于测试文件 . 因此它应用于我的一个应用程序文件而DTM仅在我编辑该应用程序文件(FTAdjust.js)时得到更新 .

    当我指定正确的测试文件时,每次在另一个进程中编辑DTM时,DTM都会更新 .

    有时甚至很难找到自己的错误,即使它盯着一个人!我一直在寻找其他地方,但错误在哪里 .

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

相关问题