在PHP5.5.34版本中启用ZendOpcache-创新互联

大家知道目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache,功能和前三者相似但又有少许不同,缓存速度据说比它们更快(注意:只是据说,我没测试过)。
这几个PHP加速插件的主要原理都相同,就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的。
Zend Opcache在PHP 5.5后的版本中已经集成了,编译安装PHP5.5的时候加上--enable-opcache就行了,也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站设计、网站制作、汇川网络推广、微信小程序开发、汇川网络营销、汇川企业策划、汇川品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供汇川建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

如果在编译安装php5.5.34的时候,没有添加--enable-opcache参数,那么在php.ini中添加一些配置参数,启用即可,php5以后的版本中已经内置Zend Opcache,所以无需另外安装

cd /usr/local/php/lib
cp php.ini php.ini.bak #备份配置文件
vim php.ini,shfit+g到最后,添加如下配置

-----------------------------------------------------------------------------------------------------

[opcache]
zend_extension=opcache.so

opcache.interned_strings_buffer=8

opcache.fast_shutdown=1
opcache.enable_cli=1
opcache.enable=1

;可用内存,酌情而定,单位 megabytes

opcache.memory_consumption=128

;大缓存的文件数目,命中率不到100%的话,可以试着提高这个值
opcache.max_accelerated_files=4000

;Opcache 会在一定时间内去检查文件的修改时间,这里设置检查的时间周期,默认为 2,单位为秒

opcache.revalidate_freq=60

------------------------------------------------------------------------------------------------------

如果是nginx环境,重启一下php-fpm进程即可

查看一下Zend Opcache是否启用

/usr/local/php/bin/php -v

最后一行带有 with Zend OPcache等字样 即表示启用

Opcache的配置参数详细解释如下:

名字默认可修改范围含义
opcache.enable"1"PHP_INI_ALL是否启用opcache
opcache.enable_cli"0"PHP_INI_SYSTEM是否在CLI(即命令行时)启用opcache
opcache.memory_consumption"64"PHP_INI_SYSTEM为opcache分配多少共享内存,单位M
opcache.interned_strings_buffer"4"PHP_INI_SYSTEMinterned string的内存大小
opcache.max_accelerated_files"2000"PHP_INI_SYSTEM

大缓存的文件数目。

实际上这个值会使用第一个大于你配置的数字的下列素数

{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 },

如你将该值指定为400,则实际上该值为463.

opcache.max_wasted_percentage"5"PHP_INI_SYSTEM
opcache.use_cwd"1"PHP_INI_SYSTEM

如果置为1,则将当前路径加入到文件key中,

以避免可能产生的同文件名的文件key冲突

opcache.validate_timestamps"1"PHP_INI_ALL

如果置为1,则OPCACHE会自动检测文件的时间戳

(检测周期为revalidate_freq),

并根据文件的时间戳来更新opcode,如果置为0,

则只能手动去重启opcache或

重启webserver以使更新后的php文件生效

opcache.revalidate_freq"2"PHP_INI_ALL

opcache自动检测文件是否更新的周期,单位秒。

如果是0,则每次请求时opcache都要进行检测。

当validate_timestamps为0时,本指令无效。

opcache.revalidate_path"0"PHP_INI_ALL
opcache.save_comments"1"PHP_INI_SYSTEM是否保存文件中的注释
opcache.load_comments"1"PHP_INI_ALL

是否load comments,与save_comments联合起来使用,

如果该值为0,则即使save_comments为1,

那么php脚本中的comments也是不使用的

opcache.fast_shutdown"0"PHP_INI_SYSTEM

是否打开快速关闭,

打开时可使php在request shutdown时回收内存快

opcache.enable_file_override"0"PHP_INI_SYSTEM

如果置为1,则每次调用file_exist() is_file() is_readable()函数时,

opcache将要检查该文件是否被cache了,

这样增加了检查存在性和可读性的开销,

但避免了当validate_timestamps为disable时返回错误文件状态的风险。

opcache.optimization_level"0xffffffff"PHP_INI_SYSTEM运行时控制优化的掩码(干什么的?)
opcache.inherited_hack"1"PHP_INI_SYSTEM5.3以前使用。5.3后废弃
opcache.dups_fix"0"PHP_INI_ALL为解决“cannot redecllare class" 时,可将其置为1
opcache.blacklist_filename""PHP_INI_SYSTEM

设置黑名单文件,符合黑名单文件中定义的php文件将不被opcache。黑名单文件的例子如下:

; Matches a specific file.
/var/www/broken.php
; A prefix that matches all files starting with x.
/var/www/x
; A wildcard match.
/var/www/*-broken.php
一行为一条规则,支持通配符,注释以分号开头
opcache.max_file_size"0"PHP_INI_SYSTEM被cache的文件的大size,单位bytes。0表示不限
opcache.consistency_checks"0"PHP_INI_ALL

如果置为N,N非零,则opcache会每N个请求核实一下cache的检验和。

这会损害性能,应该只在debug时使用

opcache.force_restart_timeout"180"PHP_INI_SYSTEM如果opcache处于非active状态,当N秒后opcache将自动重启
opcache.error_log""PHP_INI_SYSTEMopcache自身的errorlog文件路径,为空时则使用stderr
opcache.log_verbosity_level"1"PHP_INI_SYSTEM日志记录level,默认只有fatal error和error
opcache.preferred_memory_model""PHP_INI_SYSTEM

opcache选使用的内存模型,为空时会选择最适当的模型。

常用的有,mmap shm posix 和win32

opcache.protect_memory"0"PHP_INI_SYSTEM

运行php脚本时保护共享内存防止意外的写入。

只对debug时有用。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站名称:在PHP5.5.34版本中启用ZendOpcache-创新互联
文章来源:http://myzitong.com/article/deiejg.html