在PHP5.5.34版本中启用Zend Opcache

大家知道目前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的支持。

如果在编译安装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_SYSTEM interned 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_SYSTEM 5.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_SYSTEM opcache自身的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时有用。

时间: 2024-08-04 18:18:39

在PHP5.5.34版本中启用Zend Opcache的相关文章

【翻译自mos文章】在oracle db 11gR2版本中启用 Oracle NUMA 支持

在oracle db 11gR2版本中启用 Oracle NUMA 支持 参考原文: Enable Oracle NUMA support with Oracle Server Version 11gR2 (文档 ID 864633.1) 适用于: Oracle Database - Enterprise Edition - Version 11.2.0.1 and later Oracle Database - Standard Edition - Version 11.2.0.1 and l

在 Chrome 版本 42 和更高版本中启用 NPAPI

从 Chrome 版本 42 开始,需要额外的配置步骤以继续使用 NPAPI 插件. 在 URL 栏中,输入:chrome://flags/#enable-npapi 单击启用 NPAPI 配置选项的启用链接. 单击现在显示在配置页底部的重新启动按钮.

将corosync安装包以及依赖加入到KYLIN-3.3-4版本中,重新制作iso,形成新的版本,要求系统安装后默认自动安装了corosync

1)将ISO所在的/dev/sr0挂载到/media mount /dev/sr0 /media 2)安装制作工具 yum -y install createrepo mkisofs isomd5sum rsync 3)同步光盘文件到制作ISO的目录 #同步/media下的文件到/ISO路径下,除了Packages和repodata文件夹 /usr/bin/rsync -a --exclude=Packages/ --exclude=repodata/ /media/ /ISO/ # 在/ISO

pathinfo()在php不同版本中对于对多字节字符处理的不同结果

phpinfo()函数在处理路径时,在php的低版本中无法处理多字节字符,这里测试的是php5.3和php5.6 的区别 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <?php // your code goes here echo phpversion(); print_r(pathinfo("/resources/img/stock/wxb001/美景.pn

用Zend OPCache提高PHP的性能

Zend OPCache的前身是Zend Optimizer + (Zend O+),在PHP5.5的发行版本中自带了Zend O+,并重新命名为:Zend OPCache.但是默认是没有启用的,可以在ini文件中enable一下. 据统计,zend opcache比apc性能要好,可以提升提升 5%-9%. 值得关注的是Zend OPCache支持PHP5.2.0+的版本,也就是说只要是5.2以上的PHP,都可以是用Zend OPCache,而不需一定要升级到PHP5.5,所以在我们目前的生产

nginx1.4.6+php5.5.11+mysql5.6.17+mecache+opcache

要用到的软件:libiconv-1.13.tar.gz libmcrypt-2.5.8.tar.gz mcrypt-2.6.8.tar.gz mhash-0.9.9.9.tar.gz memcache-2.2.5.tgz PDO_MYSQL-1.0.2.tgz imagick-3.1.2.tgz pcre-8.21.tar.gz mysql-5.6.17.tar.gz ImageMagick.tar.gz php-5.4.21.tar.gz nginx-1.4.6.tar.gz 系统安装需求:c

php在5.5.0默认提供了Zend OPcache

eaccelerator无法兼容php5.5.0,好在php在5.5.0默认提供了Zend OPcache,所以一直习惯eaccelerator的朋友如果要升级到php5.5.0的话,可能要暂时和eaccelerator说bye bye了. 配置Zend OPcache 一直以来都习惯用eAccelerator为php提供加速,但是目前有两个问题: eAccelerator暂时不兼容php5.5.0 eAccelerator和Zend Opcache冲突 好在php5.5.0默认提供了Zend

现代 PHP 新特性 —— Zend Opcache (转)

转自:https://laravelacademy.org/post/4396.html 1.概述 字节码缓存不是PHP的新特性,有很多独立的扩展可以实现,比如APC.eAccelerator和Xache等,但是截至目前这些扩展都没有集成到PHP内核,从PHP 5.5.0开始,PHP内置了字节码缓存功能,名为Zend Opcache. 开始之前,我们先来看看什么是字节码缓存,以及字节码缓存的作用是什么. 众所周知,PHP是解释型语言,构建在Zend 虚拟机之上,PHP解释器在执行PHP脚本时会解

错误: -source 1.6 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)

今天晚上在AS上运行校长项目时,报错如下: Error:(71, 35) 错误: -source 1.6 中不支持 diamond 运算符(请使用 -source 7 或更高版本以启用 diamond 运算符) 这个错误对应程序里的代码是: 一般正确的写法是在声明的时候指定类型,也就是: List<PublicBlogListBean>  _hotDatas = new ArrayList<PublicBlogListBean>(); 但是在JDK 1.7里新增了一个新特性: 增强