如何在PHP无限循环中实时读取文件创建时间等最新属性信息?
问题原因
PHP内核内置了文件状态缓存机制,首次调用filectime()、fileatime()、filemtime()这类文件元信息查询函数时,PHP会将对应路径的文件查询结果缓存到内存中,后续针对同一路径的同类调用会直接返回缓存值,不会重新读取磁盘的真实文件信息,即使文件被修改、删除也不会主动更新缓存。
你代码中对$file_path变量的销毁、重新赋值操作,完全不影响内核层面的缓存,所以不会生效。
修复方案
每次循环查询文件时间前,主动调用clearstatcache()函数清空文件状态缓存即可,修改后参考代码如下:
$file_path = "myimg.jpeg"; while (true) { // 清空文件状态缓存,强制后续查询读取磁盘真实文件信息 clearstatcache(); echo "c:" . filectime($file_path) . " a:". fileatime($file_path) . " m:" . filemtime($file_path) . "\r\n"; // 可选:增加休眠间隔,避免空循环占用过高CPU资源 sleep(1); }
内容的提问来源于stack exchange,提问作者Láďa
相关产品推荐
相关产品推荐

