PHP 的Opcache加速的使用方法


Posted in PHP onDecember 29, 2017

本文介绍了PHP 的Opcache加速的使用方法,具体如下,分享给大家:

介绍

PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的)。对于PHP 5.5以下版本的,需要使用APC加速

Opcache是一种通过将解析的PHP脚本预编译的字节码存放在共享内存中来避免每次加载和解析PHP脚本的开销,解析器可以直接从共享内存读取已经缓存的字节码,从而大大提高PHP的执行效率。

配置

在PHP 5.5.0及后续版本中,PHP已经将Opcache功能以拓展库形式内嵌在发布版本中了,默认未开启Opcache加速,需要开发人员在php.ini中添加或解注释Opcache相关配置即可。对于之前的老版本,可以将Opcache作为PECL拓展库进行安装和配置

php.ini:

[opcache]

# 启动操作码缓存
opcache.enable=1

#针对支持CLI版本PHP启动操作码缓存 一般被用来测试和调试
opcache.enable_cli=1

# 共享内存大小,单位为MB
opcache.memory_consumption=128

#存储临时字符串缓存大小,单位为MB,PHP5.3.0以前会忽略此项配置
opcache.interned_strings_buffer=8

#缓存文件数最大限制,命中率不到100%,可以试着提高这个值
opcache.max_accelerated_files=4000

#一定时间内检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 单位为秒
opcache.revalidate_freq=60

#开启快速停止续发事件,依赖于Zend引擎的内存管理模块,一次释放全部请求变量的内存,而不是依次释放内存块
opcache.fast_shutdown=1

#启用检查 PHP 脚本存在性和可读性的功能,无论文件是否已经被缓存,都会检查操作码缓存,可以提升性能。 但是如果禁用了 opcache.validate_timestamps选项, 可能存在返回过时数据的风险。
opcache.enable_file_override=1

Opcache注意事项

1、使用Opcache就没必要使用apc 和 Xcache加速;

因为PHP 5.5.0及后续版本已经内嵌对Opcache的支持,所以PHP意识到其重要性,相对于Xcache等第三方的PHP优化器来说,使用Opcache会是更好的选择。另外,两者同时存在的话,会使Opcache的缓存命中数大大降低,而且增加不必要的开销。

2、不建议在开发过程中开启Opcache

开启了Opcache之后,开发人员修改的内容不会立即显示和生效,因为受到opcache.revalidate_freq=60的影响,所以建议在开发并测试之后,测试性能时再行打开测试,当然,生产环境一直都要开着Opcache。

3、不建议将Opcache指标设置太大

Opcache各项指标配置大小或是否开启,需要结合项目实际情况需求及Opcache官方建议的配置,项目的实际情况分析,可结合上面第四部分的可视化缓存信息分析调整。

4、不建议长期使用老版本的Opcache

建议及时关注Opcache官网动态,实时了解其的bugs修复,功能优化及新增功能,以便更好的将其应用在自己的项目中。

5、不建议在生产环境中,将上面介绍的开源项目放入Web服务根目录

原因很简单,因为这个开源项目并未做访问的限制和安全处理,也就是说凡是可以访问外网的用户,只要知道了访问地址就可以直接访问,所以不安全。一般下,这个开源工具只是帮助可视化分析PHP的性能,通常在开发调试阶段使用。如果就是想在生产环境开启使用,那么就必须做好安全限制工作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
初识php MVC
Sep 10 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
Yii开启片段缓存的方法
Mar 28 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
phpStorm2020 注册码
Sep 17 PHP
PHP扩展安装方法步骤解析
Nov 24 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 PHP
PHP自定义序列化接口Serializable用法分析
Dec 29 #PHP
PHP检测接口Traversable用法详解
Dec 29 #PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 #PHP
PHP迭代器接口Iterator用法分析
Dec 28 #PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 #PHP
PHP获取数组中指定的一列实例
Dec 27 #PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 #PHP
You might like
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
Prototype Class对象学习
2009/07/19 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
2017/04/13 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
Python中文编码那些事
2014/06/25 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
python 调用有道api接口的方法
2019/01/03 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
python的链表基础知识点
2020/09/13 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
2014年教学工作总结
2014/11/13 职场文书
财政局个人总结
2015/03/04 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
尊师重教主题班会
2015/08/14 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
用JS写一个发布订阅模式
2021/11/07 Javascript