【发布时间】:2011-08-16 13:12:06
【问题描述】:
对于Linux下包含几个字节的文件,我只需要处理它自上次处理以来的更改时间。
我通过定期调用 PHP clearstatcache(); filemtime(); 检查文件是否被更改。
由于整个文件总是很小,删除对 filemtime 的调用并通过将内容与过去的内容进行比较来检查文件更改是否会提高性能?
或者,就性能而言,最好的方法是什么。
【问题讨论】:
-
我认为非常非常困难。
filemtime()访问低级系统功能,这些功能总是会在实际打开它时胜过。有兴趣听听文件系统/操作系统专家怎么说 -
可能取决于操作系统和文件系统类型。分析两者,看看哪一个在您的特定设置中效果更好。
-
@Mat - 我想不出一个比元数据更快地返回文件内容的文件系统......如果有的话,我想我不想使用它。
-
@Brian:如果经常访问文件,数据和元数据都将被缓存 - 仅将元数据复制到用户空间与复制文件数据的几个字节之间的时间差可能很难在现代系统上进行测量。如果它真的很小,那么比较可能与与时间戳相比一样便宜 - 如果时间戳在 32 位系统上为 64 位长,甚至可能更便宜。 (但系统调用开销可能占主导地位,所以...)
-
@Mat - 哦,我同意,考虑到无法衡量的差异,这个问题本身就是愚蠢的。但是,如果文件发生更改,则需要更新缓存。而且我敢打赌,驱动器上的寻道时间会抵消任何处理 64 位数字的问题。这个对话现在使用的时间比这里的任何“优化”多年来节省的时间都多:-D
标签: php performance filemtime