php clearstatcache()性能和参数说明

php clearstatcache()性能和参数说明,php,stat,filemtime,Php,Stat,Filemtime,我使用filemtime对html中的外部资源进行指纹识别,例如: <link rel="stylesheet" href="screen-<?=md5(filemtime('screen.css'));?>.css"> 为了仅清除与该特定文件相关的信息(从而减少clearstatcache的“影响”),$clear\u realpath\u cache与函数调用相关,其结果也会被缓存。 这应该不会影响您对filemtime的呼叫。我无法直接给出答案 但是我建议您使用m

我使用
filemtime
对html中的外部资源进行指纹识别,例如:

<link rel="stylesheet" href="screen-<?=md5(filemtime('screen.css'));?>.css">

为了仅清除与该特定文件相关的信息(从而减少
clearstatcache
的“影响”),

$clear\u realpath\u cache与函数调用相关,其结果也会被缓存。
这应该不会影响您对filemtime的呼叫。

我无法直接给出答案


但是我建议您使用
md5_文件('screen.css')
而不是
md5(filemtime('screen.css'))

看起来您使用的函数是正确的。除非您使用的是您更喜欢缓存的其他stat函数(如文档中所列),否则我不知道它会导致显著减速的原因

当您
include('somefile')
时,
somefile
可能位于许多不同的位置,这取决于
include\u path
、cwd等内容。realpath缓存消除了重复搜索这些位置的需要


对于您的使用,您的代码似乎很好。

非常感谢。你知道为什么filename参数“仅在clear\u realpath\u cache为TRUE时使用”,但它“仅清除特定文件名的realpath和stat cache”…?我不知道这一点。这两个片段做了非常不同的事情。第二个接受32位整数的散列。第一种方法是对整个文件进行哈希运算。第一个几乎必然是更多的工作。(虽然我不明白为什么
filemtime('screen.css')
不够)谢谢你的回复。嗯,那么我应该使用“常规”
clearstatcache()
还是
clearstatcache(true,需要的任何文件)
?很可能,我会使用常规
clearstatcache()
函数。唯一的例外是,如果我正在执行更多我确实希望缓存的stat函数,那么您使用
md5(filemtime('screen.css'))
而不仅仅是
filemtime('screen.css')有什么原因吗
--一个32位数字的128位散列仍然只能与基础的32位数字一样好。@jedwards只是为了让数字和字母更酷;-)但是你是对的,从性能上讲,你总是可以做一些像
dechex(filemtime('screen.css'))
或者甚至
str\u-pad(dechex(filemtime('screen.css'))、8、'0',str\u-pad\u-LEFT)
——只是一个简单的例子idea@jedwardsdechex似乎输出了非常相似的字符串:50b149a2、50b152ba、50b51803。。。虽然“Firefox磁盘缓存哈希函数可以为URL生成冲突,这些URL的差异很小,即仅在8个字符的边界上”(from)。。。所以我需要一根更长的,不同的弦啊,很公平。链接也很有趣,谢谢。
clearstatcache(true,'/path/to/screen.css');