最近我问了一个问题“有没有办法找到脚本是否被opCache命中”并且无法找到答案。现在正在查看 Php5.5.11 的changelog,我发现了新功能
OPCache:
添加了函数opcache_is_script_cached()。
已添加。基于名称它正在做我想要的,但问题是我找不到任何documentation on this function。
有人能告诉我这个功能究竟是什么吗?请不要猜测。
答案 0 :(得分:2)
您可以在zend_accellerator_module.c的底部找到该功能的源代码,它似乎可以满足您的需求。看起来它需要一个参数,这是您正在检查的脚本文件名。 filename_is_in_cache
中的代码似乎处理了由不同字符串指定相同文件的情况('filename.php'vs'/var/www/filename.php'),但您可以深入挖掘或自行测试核实。
此外,这里有一个显示示例的test case,但它非常小。
答案 1 :(得分:2)
在阅读这篇文章(以及其他一些PHP手册)之后,我发现该功能还没有被记录下来。无论如何,我最近花了一点时间将这个函数添加到PHP文档中:
http://php.net/manual/en/function.opcache-is-script-cached.php
手册摘录:
opcache_is_script_cached - 判断脚本是否在OPCache中缓存
boolean opcache_is_script_cached ( string $file )
此函数检查是否已在OPCache中缓存PHP脚本。这可以用来更容易地检测到变暖"特定脚本的缓存。
如果
TRUE
缓存在OPCache中,则返回$file
,否则返回FALSE
。
答案 2 :(得分:0)
实际上,记录的函数opcache_get_status可以满足您的需求。只需在其中传递true
参数并检查返回数组中的scripts
部分即可调用它。