提升PHP执行速度全攻略(上)


Posted in PHP onOctober 09, 2006

PHP的优点之一是速度很快,对于一般的网站应用,可以说是已经足够了。不过如果站点的访问量很高、带宽窄或者其它的因素令服务器产生性能瓶颈的时候,你可能得想想其它的办法来进一步提高PHP的速度了。这篇文章将从几个方面介绍如何做到这一点,从而令用户浏览的时候更加“爽”。

代码优化

在这里并不想再次告诉你
如何写更干净的代码,这一点我想每个人都清楚,在需要速度的时候,你可能已经在PHP源代码的优化上面做了不少的工作,这里所提出的是,这个烦琐的工作可以交由其它工具来完成。这就是Zend Optimizer,此程序可以从Zend Technologies的网站(http://www.zend.com/)免费得到。它的原理很简单,通过检测Zend引擎产生的中间代码,并且优化它来得到更高的执行速度。我认为优化代码是一项颇烦琐的工作,而且优化后的代码可能变得难以理解,尤其是当你放下该PHP程序一段时间后,突然间客户要求你做一些修改时,可能你自己也不懂了;-)。因此我建议你在PHP的源代码较为复杂的时候,用Zend Optimizer来做这个优化的工作,好处是它不会令你的代码变得复杂难懂。

安装Zend Optimizer是非常简单的。只要根据你使用的平台,下载相关的预编译库,并且在你的php.ini中加入两行,重新启动你的web服务器就行了!

zend_optimizer.optimization_level=15zend_extension="/path/to/ZendOptimizer.so" zend_loader.enable=Off

你可能有点奇怪,不是说两行吗,怎么变成三行了。不过第三行是可选的,看来禁止这个zend_loader将会令优化的速度更快,因此不妨在你的php.ini文件中多加这一行。要注意的是:只有在你不使用Zend Encoder Runtime的时候,才可以禁止zend_loader,关于Zend Encoder Runtime,还会在下文提到。

要更快吗?使用cache(缓冲)吧

如果你的PHP应用还需要更快的速度,下一个办法是缓冲。要实现这一点,有几种不同的方式。我自己就试用过Zend Cache(评测版本),APC和Afterburner Cache。

以上提到的都是“缓冲模块”。它们的原理都差不多,在php文件被首次请求的时候,通过将你的PHP源代码的中间代码存储在web服务器的内存中,对于以后同样的请求,都直接提供内存中的“编译”版本。由于它可以令磁盘的访问达到最小化,因此这个方法确实可以极大地提高PHP的性能。更为方便的是,当你的PHP源代码修改时,缓冲的模块可以察觉到这些变化,并且重新载入一样,因此你不必担心客户得到的是旧版本的程序。这些缓冲的模块确实不错,但是我应该选用哪一种呢?下面分别介绍一下:

Zend Cache是Zend Technologies的一个商业化的产品(它也是免费为我们提供PHP引擎和Zend Optimizer的公司)。它确实不错。在首次运行后,你可以明显察觉到PHP的速度得到了很大的提高,服务器的空闲资源也更多了。缺点是你要付费购买它,但就性价比来说,还是非常值得的。

Afterburner Cache是Bware Technologies(bwcache.bware.it)提供的免费缓冲模块。当前还只是beta版,它所做的工作看来与Zend Cache差不多,不过性能的提高就比不上Zend Cache,而且现有的版本不能和Zend Optimizer一起工作,不过它是免费的。

APC(Alternative PHP Cache)是由Community Connect(apc.communityconnect.com)提供的另一个免费模块。它的工作很稳定,速度也有不少的提高,要注意的是,我还没有找到一个官方的测试数据,这些只是在我的应用上作测试,因此不能下一个结论

PHP 相关文章推荐
杏林同学录(二)
Oct 09 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
Php Ctemplate引擎开发相关内容
Mar 03 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
php中http与https跨域共享session的解决方法
Dec 20 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
PHP微信红包API接口
Dec 05 PHP
PHP中的浅复制与深复制的实例详解
Oct 26 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
php框架知识点的整理和补充
Mar 01 PHP
提升PHP执行速度全攻略(下)
Oct 09 #PHP
如何过滤高亮显示非法字符
Oct 09 #PHP
无限级别菜单的实现
Oct 09 #PHP
综合图片计数器
Oct 09 #PHP
php,不用COM,生成excel文件
Oct 09 #PHP
PHP中GET变量的使用
Oct 09 #PHP
一个ORACLE分页程序,挺实用的.
Oct 09 #PHP
You might like
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
PHP中的静态变量及static静态变量使用详解
2015/11/05 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
javascript 动态调整图片尺寸实现代码
2009/12/28 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
中学教师实习自我鉴定
2013/09/28 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
员工表扬信怎么写
2015/05/05 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技