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

[经验分享] 新一代 PHP 加速插件 Zend Opcache

[复制链接]

尚未签到

发表于 2017-3-26 12:21:35 | 显示全部楼层 |阅读模式
  目前PHP的缓存插件一般有三个:APC、eAccelerator、XCache,但未来它们可能都会消失,因为PHP 5.5已经集成Zend Opcache( http://pecl.php.net/package/ZendOpcache ),功能和前三者相似但又有少许不同,缓存速度据说比它们更快.

主 要原理: 就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的, 像drupal这种庞大的CMS,每次打开一个页面要调用数十个PHP文件,执行数万行代码,效率可想而知,在安装APC等加速器后打开页面的速度明显加 快。

Zend Opcache 已经集成在了PHP 5.5里面,编译安装PHP5.5的时候加上--enable-opcache就行了。但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,未来会取消对5.2的支持,下面是我在PHP 5.4下的安装方法:



wget http://pecl.php.net/get/zendopcache-7.0.2.tgz
tar xzf zendopcache-7.0.2.tgz
cd zendopcache-7.0.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
  

如果显示Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ 表示安装完成,下面要修改php的配置文件让它生效
  在 php.ini 的最后面加入下面几行



zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
  

128意思是给它分配128M内存,重新启动apache, 打印phpinfo();信息后, 即可找到Zend OPcache信息. 如图片



  在phpinfo()信息中, 目前来看有两条信息犹为重要:

Cache hits     (高级缓存命中)
Cache misses  (高级缓存未命中)
  
在这两条信息中即可观察缓存运行情况, 一目了然
高速缓存带来哪些优化呢? 对代码运行有多大帮助?

我们做个测试, 验证一下什么是opcache.



<?php
echo 'opcache';
?>
  
这是一段非常简单的php代码, 请保存为demo.php文件然后访问, 随意刷新, Cache hits数值会不停地增加, 说明起作用了,
  然后你修改代码为:

<?php
echo 'cache new';
?>
  
再刷新demo.php, 应该可以看到效果, 打印出来的值仍然是opcache, 即源码被缓存了, 它不再解析demo.php文件, 试着不停地刷新, 检测多少秒后才更新.
可设置:

opcache.force_restart_timeout=180
  的时间来控制更新速度.
  这就类似于web项目中的静态文件缓存一下, 比如我们加载一个网页, 浏览器会自动帮我们把jpg, css缓存起来, 唯独php没有缓存, 每次均需要open文件, 解析代码, 执行代码这一过程, 而opcache即可解决这个问题, 代码会被高速缓存起来, 提升访问速度.

如果嫌phpinfo()不直观可以装个PHP文件查看,地址 https://g ist.github.com/JingwenTian/9508141,把上面的代码保存为一个php文件放到你的网站目录下面打开就可以看到.

个人建议: 本地环境非必要情况下不要开启opcache, 服务器上可以开启, 必竟不是天天更新. 缓存起来有它的历史意义.
  参考阅读:

http://blog.sina.com.cn/s/blog_5f5a3dff0101gf9e.html

http://www.oschina.net/question/998019_110792

http://cnzhx.net/blog/zendopcache-accelerate-php/

http://www.vpser.net/opt/apc-eaccelerator-xcache.html
  转载自: http://www.jingwentian.com/t-173

运维网声明 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-355618-1-1.html 上篇帖子: PHP从零开始学(安装篇) 下篇帖子: php编写的闹钟程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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