可能很多朋友在接触PHP的时候或多或少了解到:PHP是脚本语言、一种解释型语言,所以它不需要经过编译就能运行,诸如此类。
这种说法虽然并不完全正确,但对于初学者来说,这么理解或许还比较合适,不仅能快速入门,调试代码还挺方便。但当你想要优化基于PHP开发的网站,以支持更高的并发访问时,就得了解什么是Opcodes。
默认情况,PHP对每一个请求,都会进行代码解析、编译等一系列处理生成对应的操作码,最后通过Zend引擎执行。如图所示:
引用Laruence的例子:
1 2 3 4 5 |
|
PHP执行这段代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)
1.Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
2.Parsing, 将Tokens转换成简单而有意义的表达式
3.Compilation, 将表达式编译成Opocdes
4.Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。
Opcodes缓存的作用正是把编译好的操作码保存一段时间,让Zend引擎在之后的请求中不用再次解析、编译。如图所示:
当你在苦苦寻求加快PHP网站响应速度的方法时,我敢说缓存Opcodes就是你要找的方法之一,而且是最容易的。
本文介绍如何使用Opcache(原名Zend Optimizer Plus,简称O+)给PHP程序加速。O+是由Zend公司开发的一个PHP性能提升工具,不同于其他Opcodes缓存工具, O+除了缓存Opcodes以外, 还做了很多的Opcodes优化。
从PHP5.5开始, O+已经随着PHP的源代码一起发布了。5.2以上的PHP版本也可以通过编译的方式,加载O+。下载地址http://pecl.php.net/zendopcache
相同配置下,使用Apache Benchmark进行压力测试,O+的优化效果对比如下:
ab -c50 -t2 10.0.0.59/ab_test.php
开启O+:Requests per second: 168.77 [#/sec] (mean)
关闭O+:Requests per second: 157.44 [#/sec] (mean)
提高了11.33
ab_test.php代码如下:
1 2 3 4 5 6 7 8 9 |
|
接下来就把我的安装流程贴出来,因为我是用yum搭建环境的,可能不适用于你的情况,仅供参考。
1)下载、编译、安装
1 2 3 4 5 6 7 |
|
2)编辑php.ini,在文件底部添加配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
3)让php-fpm重新加载配置文件
1 |
|
4)运行如下代码
1 2 |
|
如果能找到类似的文字提示,说明PHP已经成功加载了OPcache。马上体验一下,PHP网站是不是响应更快了呢?
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
原文链接:https://www.cnblogs.com/doubilaile/p/8434280.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17352