php - 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 中的行为相同。
解决方案
结果被缓存: http: //php.net/manual/en/function.filemtime.php
注意:此函数的结果被缓存。有关详细信息,请参阅 clearstatcache()。
这几乎听起来像 Windows 正在做一些写缓存......
另一方面, stat() 有一个附加说明:
笔记:
请注意,时间分辨率可能因文件系统而异。
也许值得检查统计输出。
编辑
也许这是一个错误,或者 Windows 玩得不好,但你也可以shell_exec
使用显示 DTM 的 Windows 命令来做。
推荐阅读
- facebook - facebook 聊天进入网站时出现内容安全策略错误?
- oracle - PL/SQL - 特定于一个数据库的条件编译
- neo4j - 带有 lambda 表达式和消费者断言的 TestMethods 的 JQassistant 规则
- node.js - 创建的模型返回空数组
- python - Python 命令行循环
- c# - 在不迁移用户的情况下使用 Azure Active Directory B2C
- python - 如何从python中的字典中检索特定数据
- web - 如何将网页作为网络视频墙镜像到另一个浏览器?
- python - 如何自动确定用户输入的类型?
- java - JavaFX WebView 过度绘制自身并拒绝监听任何 javascript 函数以使其自动滚动到底部