设为首页 收藏本站
查看: 542|回复: 0

[经验分享] 在PHP5.5.34版本中启用Zend Opcache

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-28 10:09:52 | 显示全部楼层 |阅读模式
大家知道目前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时有用。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-209866-1-1.html 上篇帖子: PhP 常见安装错误configure error xml2-config not found. please check your libxml2 insta 下篇帖子: 编译安装php-5.5.34
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表