提升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 相关文章推荐
在 PHP 中使用随机数的三个步骤
Oct 09 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
php中简单的对称加密算法实现
Jan 05 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
Mar 18 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
PHP n个不重复的随机数生成代码
2009/06/23 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript 函数速查表
2010/02/07 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
jquery实现图片左右间隔滚动特效(可自动播放)
2013/05/08 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
jQuery时间验证和转换为标准格式的时间格式
2017/03/06 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
Python实现CET查分的方法
2015/03/10 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
python中numpy.zeros(np.zeros)的使用方法
2017/11/07 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
护士个人简历自荐信
2013/10/18 职场文书
专营店会计助理岗位职责
2013/11/29 职场文书
实习单位接收函模板
2014/01/10 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
个人批评与自我批评
2014/10/15 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫