接着上次的文章:
4.Opcode缓存
现在要加快PHP脚本的运行速度,我们要做的是在对PHP脚本进行请求时删除所有不必要的进程,我们可以通过删除在PHP生命周期中无需常规执行的进程来优化应用程序,从而使其对用户的任何请求做出更快的 响应。(你将学会以下缓存工具:Alternative PHP Cache,XCache,eAccelerator)。
4.1 PHP的生命周期
PHP生命周期
PHP生命周期非常短暂,但是每次运行时,以上的步骤必须执行,如果实现Opcode。我们就可以省略词典扫描、解析、创建Opcode三个步骤以缩短PHP声明周期。
优化后
你应该很熟悉缓存理论了,如果不是,也不用担心,概括地说,缓存是在共享内存中防止数据以供过后读取的技术,其访问速度比实际从硬盘中读取数据要快得多,单也应遵循实际,不是因为快全部存入缓存,本人在是做小程序时也是将token存入缓存中读取使用。现在来看看适用于PHP的缓存工具。
4.2 Opcode缓存工具
4.2.1 Alternative PHP Cache(APC)
一个PECL扩展,可用于Unix、Windows,APC直接安装在zend引擎上,如果请求正在进行而且没有过期,他可以提供一种缓存系统,将该请求重庆向至已缓存的Opcode.
1)安装:sudo pecl install apc ,安装完成后更新php.ini文件,安装好后使用 phpinfo();输出查看是否安装。
2)测试:使用同一段代码测试在APC开启和关闭时的运行状况,使用上一部分提到过的AB查看两者对比效果,很明显,开启APC后的运行效果更佳。
3)APC管理工具:它本身自带了管理工具,开发人员可安装此网页界面。更详细说明就希望大家自己探索啦。
4.2.2 XCache
另一种在PHP中使用的Opcode缓存工具,像APC一样,XCache在共享内存中存储Opcode,并使用缓存的Opcode来响应对PHP脚本的请求。XCache 1.2.X是最稳定的版本。我们的AB是万能的,此处也使用AB进行测试。同样其响应速度比平均水平要快得多。(不知道AB的请回顾上一节内容)
XCache还包含了一组很棒的配置选项,我们可以用他们自定义XCache.理解缓存工具的每一个设置是非常重要的,因为一些设置既可以加快运行速度,也有可能使速度降低。
4.2.3 eAccelerator
eAccelerator(eA),他的工作方式和APC,XCache非常相似,eA由Dmitry Stogov创建,最初是Truck MMcahce项目的组成部分,与APC,XCache一样,eA也在共享内存中存储缓存的内容,但也提供了一个单独的选项,可以将缓存数据存储在磁盘上。安装过程不再赘述。
5.变量缓存
没有缓存的情况下从数据库中获取数据
从缓存中读取数据
该操作触发了“缓存命中”流程,触发后,很明显的可以跳过许多步骤,这种方式更为快速,效果更佳,因为我们不需要处理外部驱动器,网络问题和软件等事项。这种方式不仅限于从数据库中读取数据,我们可以对平面文件中存储的数据以及过程密集型函数/方法的结果进行缓存。
1)测试:使用AB模拟从数据库读取1万条记录的PHP脚本,性能明显下降。使用APC后性能明显提高,APC前文已经介绍。
5.1 Memcached缓存
如果你的系统安装了apt-get,可以运行命令apt-get install php5-memcached,运行phpinfo();查看是否成功安装。
执行/usr/bin/memcached -m 512 -p 11211 启动memcached,memcached默认11211端口,-p参数改变端口号。
连接到memcached服务器:
$memHost='localhost';
$memPort=11211;
$memCached=new memcached();
$memcached->addServer($memHost,$memPort);
对两段代码,一段使用memcached,一段不使用memcached,明显,使用memcached的性能提高50%以上。