如何使用PHP OPCache?

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

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

安装

OpCache默认在PHP5.5 +上编译。 但是它默认是禁用的。 为了在PHP5.5 +中开始使用OpCache,您首先必须启用它。 要做到这一点,你必须做到以下几点。

php.ini下行添加到您的php.ini

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

请注意,如果path包含空格,则应将其用引号括起来:

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

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

用法

目前有四个function可以使用:

opcache_get_configuration()

返回包含OpCache使用的当前使用configuration的数组。 这包括所有ini设置以及版本信息和黑名单文件。

 var_dump(opcache_get_configuration()); 

opcache_get_status()

这将返回一个数组,其中包含有关caching当前状态的信息。 这些信息将包括:caching所在的状态(启用,重启,完整等),内存使用情况,命中,未命中以及一些更有用的信息。 它也将包含caching的脚本。

 var_dump(opcache_get_status()); 

opcache_reset()

重置整个caching。 意味着所有可能的caching脚本将在下次访问时再次被parsing。

 opcache_reset(); 

opcache_invalidate()

使特定的caching脚本无效。 这意味着脚本将在下次访问时再次被parsing。

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

维护和报告

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

OpCacheGUI

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

特征:

  • OpCache状态
  • OpCacheconfiguration
  • OpCache统计信息
  • OpCache重置
  • caching的脚本概述
  • caching的脚本失效
  • 多种语言
  • 移动设备支持
  • shiny的图表

截图:

状态

缓存的脚本

图

mobilr

URL: https : //github.com/PeeHaa/OpCacheGUI

opcache状态

特征:

  • OpCache状态
  • OpCacheconfiguration
  • OpCache统计信息
  • caching的脚本概述
  • 单个文件

截图:

状态

url: https : //github.com/rlerdorf/opcache-status

opcache贵

特征:

  • OpCache状态
  • OpCacheconfiguration
  • OpCache统计信息
  • OpCache重置
  • caching的脚本概述
  • caching的脚本失效
  • 自动刷新

截图:

opcache  - 桂 - 概述

url: https : //github.com/amnuts/opcache-gui

OPcache取代了APC

由于OPcache旨在replaceAPC模块,因此不可能在PHP中并行运行它们。 这对cachingPHP操作码是好的,因为它不会影响你如何编写代码。

但是,这意味着如果您当前正在使用APC来存储其他数据(通过apc_store()函数),那么如果您决定使用OPCache,将无法做到这一点。

您将需要使用另一个库,例如APCu或Yac ,这些库都将数据存储在共享的PHP内存中,或者切换到使用类似memcached的内容,这些内存将数据存储在内存中,并以单独的过程存储到PHP中。

而且,OPcache与APC中的上载进度表没有任何相同之处。 相反,你应该使用会话上传进度 。

OPcache的设置

OPcache的文档可以在这里find所有在这里列出的configuration选项。 推荐的设置是:

 ; Sets how much memory to use opcache.memory_consumption=128 ;Sets how much memory should be used by OPcache for storing internal strings ;(eg 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注释以减less优化代码的大小。 禁用“文档评论”可能会破坏一些现有的应用程序和框架(例如Doctrine,ZF2,PHPUnit)

我将会为我使用opcache而下降两分钱。

我已经制定了一个广泛的框架,有很多领域和validation方法和枚举能够与我的数据库交谈。

没有opcache

在没有使用opcache的情况下使用这个脚本的时候,我会在2.8秒内将9000个请求推送到apache服务器上,这个请求在90-100%cpu的时间最长为70-80秒,直到它赶上所有的请求。

Total time taken: 76085 milliseconds(76 seconds)

随着opcache启用

启用opcache时,CPU运行时间为25-30%,时间约为25秒,CPU使用率从未超过25%。

Total time taken: 26490 milliseconds(26 seconds)

我做了一个opcache黑名单文件禁用caching的一切,除了是静态的,并不需要改变function的框架。 我明确地select了框架文件,这样我就可以开发而不用担心重新加载/validationcaching文件。 让所有的caching在总共25546 milliseconds的请求上节省了一秒

这极大地扩展了我每秒可以处理的数据/请求的数量,而不需要服务器甚至冒出汗来。

在Amazon Linux上使用PHP 5.6(在RedHat或CentOS上应该是一样的):

 yum install php56-opcache 

然后重新启动apache。

我在设置moodle时遇到了这个问题。 我在php.ini文件中添加了以下几行。

 zend_extension=C:\xampp\php\ext\php_opcache.dll [opcache] opcache.enable = 1 opcache.memory_consumption = 128 opcache.max_accelerated_files = 4000 opcache.revalidate_freq = 60 ; Required for Moodle opcache.use_cwd = 1 opcache.validate_timestamps = 1 opcache.save_comments = 1 opcache.enable_file_override = 0 ; If something does not work in Moodle ;opcache.revalidate_path = 1 ; May fix problems with include paths ;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487 ; Experimental for Moodle 2.6 and later ;opcache.fast_shutdown = 1 ;opcache.enable_cli = 1 ; Speeds up CLI cron ;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps extension=C:\xampp\php\ext\php_intl.dll [intl] intl.default_locale = en_utf8 intl.error_level = E_WARNING 

intl – > http://php.net/manual/en/book.intl.php

随着Ubuntu 14.04的发布和PHP 5.5的普及,将会有一个从可选性能caching(APC)转向PHP新的内置OPcache。

这是一个似乎是任何解释性语言的合乎逻辑的举动。 随着网站变得越来越复杂,许多进程正在运行,操作码caching已经成为一种必然 – 幸运的是,它的实现非常简单。

你需要做的OPcache设置是在你的服务器上的php.ini文件进行更改。

在PHP中设置以下设置: 在这里输入图像描述

然后configuration下一个设置:

在这里输入图像描述

点击这里阅读全文。

Interesting Posts