Windows上的filemtime()的已知问题 - 文件被任意触摸?

时间:2010-04-29 12:11:57

标签: php windows apache caching filemtime

是否存在导致Windows XP SP 3上缓存文件的文件修改时间被任意更新但是没有任何实际更改的已知问题?

标准Windows XP上是否有某些服务 - 备份,同步,版本控制,病毒扫描程序 - 已知可以触摸文件?它们都有.txt扩展名。

如果没有,请忘掉它。然后我在缓存例程中出错了,我将调试我的方式。

背景

我正在围绕Windows服务器上的慢速网站构建一个简单的缓存包装。

我将filemtime()时间戳与数据库中的某些列进行比较,以确定缓存的文件是否过时。

我在使用此方法时遇到问题,因为缓存文件的修改时间似乎在操作之间得到更新,而我没有做任何事情。这会导致显示过时的文件。

我是这台机器上的唯一用户。操作系统是Windows XP,Web服务器是带有PHP 5.2的XAMPP Apache 2

2 个答案:

答案 0 :(得分:1)

我能想到的唯一一个mtime问题是可怕的DST bug。这听起来不像你所得到的那样。

当然还有其他一些Windows工具可能会修改你背后的文件,但通常是用户级别的东西,如WMP搞砸了ID3标签,或狡猾的AV ...没有任何我希望触及你的缓存文件的东西

(也许你可以尝试mtimes的相等比较,而不是大于/小于,只有在存在完全匹配的情况下才使用缓存?这至少意味着如果某些反社会泄密者正在触摸文件' ll只是让你慢下来,而不是让你提供过时的文件.FWIW这就是Python用它的字节码缓存。)

答案 1 :(得分:1)

您可以在计算机上设置logging * ,以了解正在更改文件的内容。根据您的描述,我经常会这样做,因此您可能会发现ProcessMonitorgerman)是更好的监控解决方案。

*我认为您也可以使用板载工具设置日志记录,只是不确定如何