9

PHP 5.5 的 OPcache 扩展在我的(共享)网络主机上启用,但由于某种原因,它总是在统计信息中报告“0 点击”。可能是因为它与suPHP不兼容不兼容吗?

或者任何人对为什么有 0 次缓存命中有任何其他建议?

在此处输入图像描述

4

2 回答 2

8

可以为 CLI 和基本 GCI 轻松启用 OPcache,但除非 PHP 进程在多个请求上持续存在,否则您只会在人为的场景中看到缓存命中-例如,当在同一个请求中多次编译同一个脚本时。(我说是人为的,因为这样的脚本无法定义全局命名空间实体,例如类或函数,因为第二次和后续编译将失败。)

在大多数共享主机配置中,系统管理员将 PHP 配置为一次性 php-cgi 执行,即 PHP 映像在托管帐户 UID 内基于每个请求启动。这具有简单和安全的优点。这也有性能差的缺点,因为 PHP 映像启动开销是在每个请求的基础上产生的,并且由于 mmap 的 SMA 在映像关闭时被丢弃,所以任何编译的脚本都不会在请求之间持续存在。

要使 OPcache 正常工作,您需要有能够在请求爆发后持续存在的 PHP 进程。一些 mod_fcgid 模式确实支持这一点,但是如果没有您的配置的更多详细信息,我无法为您提供任何进一步的指导。对不起。

于 2014-03-16T17:49:07.057 回答
6

遗憾的是,有人告诉我,目前没有 opcache 扩展与 suPHP 兼容

LiteSpeed 的 suEXEC可以支持操作码缓存,但只能在 ' daemon ' 或 ' process group ' 模式下,而不是在标准的 ' worker ' 模式下(参见他们的解释here)。

因此,即使您可以在 cPanel 中或通过 INI 启用 opcache,您也不会获得缓存命中,因为 PHP 进程结束并且 RAM 被释放。看来我暂时不走运了。

于 2014-03-25T21:39:57.220 回答