最近我问了一个问题“有没有办法找到脚本是否被 opCache 命中”并且无法找到答案。现在查看Php5.5.11的更新日志,我发现新功能
OPCache:
添加了函数 opcache_is_script_cached()。
加入。根据名称,它完全符合我的要求,但问题是我找不到有关此功能的任何文档。
谁能告诉我这个功能到底是做什么的?请不要胡乱猜测。
最近我问了一个问题“有没有办法找到脚本是否被 opCache 命中”并且无法找到答案。现在查看Php5.5.11的更新日志,我发现新功能
OPCache:
添加了函数 opcache_is_script_cached()。
加入。根据名称,它完全符合我的要求,但问题是我找不到有关此功能的任何文档。
谁能告诉我这个功能到底是做什么的?请不要胡乱猜测。
您将在zend_accellerator_module.c的底部找到该函数的源代码,并且它确实可以执行您想要的操作。看起来它需要一个参数,即您正在检查的脚本文件名。中的代码filename_is_in_cache
似乎处理了相同文件由不同字符串指定的情况('filename.php' vs '/var/www/filename.php'),但您可以深入挖掘或自行测试以验证。
此外,这是一个显示示例的测试用例,尽管它非常小。
在阅读了这篇文章(以及其他一些 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 )
此函数检查 PHP 脚本是否已缓存在 OPCache 中。这可用于更轻松地检测特定脚本的缓存“升温”。
TRUE
如果$file
缓存在 OPCache 中,则返回,FALSE
否则返回。
实际上,记录在案的函数opcache_get_status 可以满足您的需求。只需通过true
在其中传递参数并检查scripts
返回数组中的一个部分来调用它。