1

最近我问了一个问题“有没有办法找到脚本是否被 opCache 命中”并且无法找到答案。现在查看Php5.5.11更新日志,我发现新功能

OPCache:

添加了函数 opcache_is_script_cached()。

加入。根据名称,它完全符合我的要求,但问题是我找不到有关此功能的任何文档

谁能告诉我这个功能到底是做什么的?请不要胡乱猜测。

4

3 回答 3

2

您将在zend_accellerator_module.c的底部找到该函数的源代码,并且它确实可以执行您想要的操作。看起来它需要一个参数,即您正在检查的脚本文件名。中的代码filename_is_in_cache似乎处理了相同文件由不同字符串指定的情况('filename.php' vs '/var/www/filename.php'),但您可以深入挖掘或自行测试以验证。

此外,这是一个显示示例的测试用例,尽管它非常小。

于 2014-04-22T21:08:40.930 回答
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 )

此函数检查 PHP 脚本是否已缓存在 OPCache 中。这可用于更轻松地检测特定脚本的缓存“升温”。

TRUE如果$file缓存在 OPCache 中,则返回,FALSE否则返回。

于 2015-02-16T18:11:27.490 回答
0

实际上,记录在案的函数opcache_get_status 可以满足您的需求。只需通过true在其中传递参数并检查scripts返回数组中的一个部分来调用它。

于 2015-02-03T22:23:42.707 回答