我的OpCache在运行吗?

Sal*_*ali 31 php opcache

我正在尝试在我的服务器上启用opCache(ubuntu 12.04 LTS运行apache 2.4.7PHP Version 5.5.10-1+deb.sury.org~precise+1).

在开始做任何事情之前,我读了这篇高度相关的帖子,告诉我opCache默认是禁用的,我必须手动启用它.

我进入php.ini并发现没有文本opcache.so,也注意到与opcache相关的所有内容.像这样:

[opcache]
; Determines if Zend OPCache is enabled
;opcache.enable=0

; Determines if Zend OPCache is enabled for the CLI version of PHP
;opcache.enable_cli=0
Run Code Online (Sandbox Code Playgroud)

这没关系,因为这个人告诉它被禁用了.但是,当我查阅phpinfo();它时,向我显示以下内容(根据我的理解,它告诉我已经使用了opCache).

在此输入图像描述

我的opcache是​​否已启用并使用,如何查看/验证它?

Ray*_*Ray 35

相信你phpinfo(),你已经运行了必要的共享模块,或者它不会出现.

此外,您的opcache确实已启用,但仅适用于Web,而不是cli.库的默认值是为web启用的,因此要禁用以分号开头取消注释行,如下所示:

 opcache.enable=0 
Run Code Online (Sandbox Code Playgroud)

如上所述,对于命令行php使用,默认为禁用,启用它,取消注释并设置为1

 opcache.enable_cli=1
Run Code Online (Sandbox Code Playgroud)

以下是所有运行时参数的列表,以及用于进一步参考的默认值:http://www.php.net/manual/en/opcache.configuration.php

如果你想要一个很酷的网络监控页面(如apc.php为apc做的那样)试试这个:https: //github.com/rlerdorf/opcache-status

  • 只是想说如果您需要从cli中检查它,则可以运行php -i | grep opcache (2认同)

Jes*_*les 8

由于某些原因,关于 PHP OPcache for PHP v5.5(第一个支持它的版本)有很多相互冲突的文档,一些网页说默认情况下启用它,而另一些网页则说默认情况下它已编译,但未启用。

仅凭我的记忆,我想我见过 PHP 5.5 和 5.6 安装,其中 OPcache 确实已编译但尚未启用。这可以解释为什么默认php.ini行显示为禁用。这种混乱可能是由于 PHP 的编译方式多种多样。

无论如何,由于各种原因,PHP 7+ 似乎总是默认启用 OPcache,并且再次避免复杂的讨论:编译。

话虽如此,OP 问题实际上是为了检查 OPcache 是否启用(仅)。

为此,有一个特殊的函数 opcache_get_status,它也可以接受数组。展望未来,该函数可能会变得更加流行,因为它更适合解释 OPcache 配置设置,而不是php.ini可以在各种脚本等中使用。

这是一个简单的例子:

<?php (is_array(opcache_get_status()) ? 'enabled' : 'disabled') ?>
Run Code Online (Sandbox Code Playgroud)

参考:https://www.digitalocean.com/community/questions/enable-php-5-5-opcache-on-ubuntu-14-04-with-nginx-and-php-fpm? comment=25376

  • 另请注意,您可以检查 function_exists( 'opcache_get_status' ) 以避免致命错误 (2认同)