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 相关文章推荐
教你如何把一篇文章按要求分段
Oct 09 PHP
我的论坛源代码(六)
Oct 09 PHP
支持php4、php5的mysql数据库操作类
Jan 10 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 PHP
PHP加MySQL消息队列深入理解
Feb 27 PHP
YII2 全局异常处理深入讲解
Mar 24 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
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
javascript实现表单验证
2016/01/29 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
详解vue axios中文文档
2017/09/12 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
Python输出带颜色的字符串实例
2017/10/10 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
python同步两个文件夹下的内容
2019/08/29 Python
Python进度条的制作代码实例
2019/08/31 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
学校后勤人员职责
2013/12/27 职场文书
自我评价如何写好?
2014/01/05 职场文书
广告业务员岗位职责
2014/02/06 职场文书
银行办公室岗位职责
2014/03/10 职场文书
公司建议书怎么写
2014/05/15 职场文书
教师节主题班会方案
2015/08/17 职场文书