如何使用PHP OPCache?安装用法维护和报告

2022-08-30 06:10:42

PHP 5.5已经发布,它具有一个名为OPCache的新代码缓存模块,但似乎没有任何文档。

那么它的文档在哪里,我如何使用OPcache?


答案 1

安装

默认情况下,OpCache 是在 PHP5.5+ 上编译的。但是,默认情况下它是禁用的。为了开始在PHP5.5 +中使用OpCache,您首先必须启用它。为此,您必须执行以下操作。

将以下行添加到您的:php.ini

zend_extension=/full/path/to/opcache.so (nix)
zend_extension=C:\path\to\php_opcache.dll (win)

请注意,当路径包含空格时,应将其括在引号中:

zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll"

另请注意,您将不得不使用该指令而不是“正常”指令,因为它会影响实际的Zend引擎(即运行PHP的东西)。zend_extensionextension

用法

目前,您可以使用四个功能:

opcache_get_configuration()

返回一个数组,其中包含 OpCache 当前使用的配置。这包括所有ini设置以及版本信息和列入黑名单的文件。

var_dump(opcache_get_configuration());

opcache_get_status()

这将返回一个数组,其中包含有关缓存当前状态的信息。此信息将包括以下内容:缓存所处的状态(启用,重新启动,已满等),内存使用情况,命中数,未命中数以及一些更有用的信息。它还将包含缓存的脚本。

var_dump(opcache_get_status());

opcache_reset()

重置整个缓存。这意味着所有可能的缓存脚本将在下次访问时再次解析。

opcache_reset();

opcache_invalidate()

使特定的缓存脚本无效。这意味着脚本将在下次访问时再次解析。

opcache_invalidate('/path/to/script/to/invalidate.php', true);

维护和报告

创建了一些GUI来帮助维护OpCache并生成有用的报告。这些工具利用上述功能。

OpCacheGUI

免责声明 我是这个项目的作者

特征:

  • OpCache 状态
  • OpCache 配置
  • OpCache 统计
  • OpCache reset
  • 缓存脚本概述
  • 缓存脚本失效
  • 多种语言
  • 移动设备支持
  • 闪亮的图表

截图:

status

cached-scripts

graphs

mobilr

网址: https://github.com/PeeHaa/OpCacheGUI

opcache-status

特征:

  • OpCache 状态
  • OpCache 配置
  • OpCache 统计
  • 缓存脚本概述
  • 单个文件

截图:

status

网址: https://github.com/rlerdorf/opcache-status

opcache-gui

特征:

  • OpCache 状态
  • OpCache 配置
  • OpCache 统计
  • OpCache reset
  • 缓存脚本概述
  • 缓存脚本失效
  • 自动刷新

截图:

opcache-gui-overview

网址: https://github.com/amnuts/opcache-gui


答案 2

OPcache 取代 APC

由于 OPcache 旨在取代 APC 模块,因此无法在 PHP 中并行运行它们。这对于缓存PHP操作码来说很好,因为两者都不会影响您编写代码的方式。

但是,这意味着如果您当前正在使用APC来存储其他数据(通过apc_store()函数),如果您决定使用OPCache,您将无法执行此操作。

您将需要使用另一个库,例如APCuYac,它们都将数据存储在共享的PHP内存中,或者切换到使用memcached之类的库,它将数据存储在内存中,与PHP分开。

此外,OPcache 没有与 APC 中存在的上传进度表等效的等效项。相反,您应该使用会话上传进度

OPcache 的设置

可以在此处找到有关 OPcache 的文档,其中包含此处列出的所有配置选项。建议的设置包括:

; Sets how much memory to use
opcache.memory_consumption=128

;Sets how much memory should be used by OPcache for storing internal strings 
;(e.g. classnames and the files they are contained in)
opcache.interned_strings_buffer=8

; The maximum number of files OPcache will cache
opcache.max_accelerated_files=4000

;How often (in seconds) to check file timestamps for changes to the shared
;memory storage allocation.
opcache.revalidate_freq=60

;If enabled, a fast shutdown sequence is used for the accelerated code
;The fast shutdown sequence doesn't free each allocated block, but lets
;the Zend Engine Memory Manager do the work.
opcache.fast_shutdown=1

;Enables the OPcache for the CLI version of PHP.
opcache.enable_cli=1

如果使用任何使用代码批注的库或代码,则必须启用保存注释:

opcache.save_comments=1

如果禁用,则从代码中删除所有 PHPDoc 注释,以减小优化代码的大小。禁用“文档注释”可能会破坏一些现有的应用程序和框架(例如,Doctrine,ZF2,PHPUnit)


推荐