找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 987|回复: 1

[杂谈] 怎样增长php运行速度?

[复制链接]
发表于 2012-7-22 23:09:16 | 显示全部楼层 |阅读模式 来自 广东省广州市
使役PHP的最大1个优势就是速度快。普通情况下,PHP老是具备足够的速度支持Web内容动态生成,好些时分甚而无法找出比它更快的办法。然而,当面临庞大的过访量、高载荷的应用、有限的带宽,以及其它各种带来性能瓶颈的因素时,就需要考量怎样增长PHP的性能了。
1、代码优化
代码优化不单只是开具整洁和清楚的代码,而是对代码施行一定的简化。可以使役Zend Optimizer来半自动帮忙完成这些烦杂的办公。Zend Optimizer可以从Zend Technologies的网站http://www.zend.com/免费达成,但务必答应它的允许约定,因为它不是以GPL形式发行的。它的原理很简单,即经过检测Zend引擎萌生的半中腰代码,并对它施行优化,从而得到更高的执行速度。
在使役了Zend Optimizer后,复杂的PHP源手续的执行速率马上会达成显著增长,缺点是优化后的代码可读性减退,给代码修改带来艰难。
Zend Optimizer的安装办法十分简单,只要依据用户使役的平台,下载相关的预编译版本,把下边2行代码介入到php.ini文件中,从新启动Web 服务器就行了:
zend_optimizer.optimization_level=15
zend_extension=″/path/to/ZendOptimizer.so″
zend_loader.enable=Off
额外增加的第三行代码是可选的,因为禁用zend_loader将会使优化速度更快。需要注意的是,只有在不使役Zend Encoder Runtime的时分,才可以禁用zend_loader。
2、使役缓存
假如PHP手续的规模巨大,那么增长速度的法子就是使役缓存。如今已经有好些缓存方案可供取舍,其中涵盖Zend Cache、APC和Afterburner Cache。
上头这几种都是“缓存板块”(caching modules)。首届调用PHP文件时,缓存板块从PHP源代码生成一点半中腰代码,并把这些半中腰代码存储在Web服务器的内存中。之后再调用这些文件时,就可以直接使役内存中“编译”过的代码。这种办法委实能够改善应用的性能,因为它要得磁盘过访量减低到达最少的程度(代码已经读取和解析),代码直接在内存中运行,要得服务器响应烦请的速度大大增长。
当然,缓存板块还会监视PHP源文件的变动,必要时会从新缓存页面,从而避免用户达成的页面仍旧由陈旧PHP代码生成。因为缓存板块能够表面化地减低服务器的负载,增长PHP应用的响应速率,故此它们十分适应于负载较大的网站使役。
Zend Cache是Zend Technologies企业开发的商业软件。在首届运行后,PHP页面的运行速度马上会有巨大的增长,服务器的空闲资源也更多了。缺点是它不是免费的,但性价比仍然颀长的。
Afterburner Cache是Bware Technologies企业开发的免费缓存板块。功能与Zend Cache基本同样,但增长性能方面不比Zend Cache。
APC(Alternative PHP Cache)是由Community Connect企业开发的另一种免费缓存板块,现下版本是2.0.4,可以从http://pecl.php.net/package/APC得到。对于产品应用来说,它的性能很安定,而且也能在巨大程度上增长响应烦请的速度。
3、压缩网页内容
影响站点的过访速度还有1个关紧因素,那就是下载速度。解决的法子就是压缩网页内容。对于纯文本内容而言,HTTP压缩技术可压缩至原体积的40百分之百以下,从而提供60百分之百以上的数据传输节约。虽然Web服务器会因为压缩以致CPU占用的些微升涨,但可以节约大量用于传输的网络IO。
依据IETF规范,大多浏览器都支持使役gzip压缩算法施行内容压缩。也就是说,可以先用gzip压缩网页内容,而后发送到客户端浏览器,浏览器在收缴的时分会半自动解压数据,再预示页面。这个过程对用户来说,是纯粹透明的。同等,压缩Web页面的内容也有不一样的办法。
Mod_gzip是1种开放源代码的、标准的Apache板块,也叫互联网内容加速板块。可以将它和Apache一起编译,也可以作为DSO使役。相对于普通的浏览过程,它可以节约40百分之百左右的流量。Mod_gzip不单可以压缩静态的内容,如HTML、XML,而且对动态生成的,涵盖SQL、Java、WML、VRML等萌生的内容,在服务器端施行实时压缩并传输,其压缩速率惊人,普通都为60百分之百~85百分之百。
压缩动态网页的内容,还可以使役class.gzip来对.php文件编码,class.gzip经过在PHP脚本的开头和结尾调用它的一点函数来压缩网页内容。假如囫囵站点都需要这么的压缩,可以在php.ini文件中的auto_prepend和auto_append中调用这些函数,不过会占用一定的系统开销。
PHP4.0.4推出了1种新的输出缓冲的办理手眼—ob_gzhandler,它的效用和class.gzip一致,差别是可以直接把它加到php.ini 文件中,语法如次:
output_handler = ob_gzhandler;
这么将激活PHP的输出缓冲功能,并在发送内容前施行压缩。假如不想在这搭设置,只在需要的地方才变更这个默认设置(不压缩),只要在需要压缩的PHP源手续目次中,修改一下.htaccess文件就行了,语法如次:
php_value output_handler ob_gzhandler
还是直接在PHP代码中调用它:
ob_start("ob_gzhandler");
输出缓冲的效果委实很理想,而且不会为服务器带来额外的系统开销。要注意的一点儿是Netscape Communicator不支持图像的压缩。故此错非晓得过访者都使役Internet Explorer,否则务必禁阻压缩jpeg和gif图象。
4 其他技法
在编程时,使役一点小技法也可以加快PHP的运行速度:
(1)用i+=1接替i=i+1,既合乎c/c++的习性,速率相对还更高。
(2)尽可能使役PHP内部函数。
(3)能使役单引号字符串时,尽力使役单引号字符串。单引号字符串的速率要高于双引号字符串。
(4)用foreach接替while遍历数组,foreach的速率表面化高于while循环,而且不必调用reset函数。
本文由海南移动网上营业厅http://www.bzmir3.com/提供 转载请注明出处

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2012-7-22 23:23:42 | 显示全部楼层 来自 广东省珠海市
虽然不学php,不过顶一顶

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-5-7 08:57 , Processed in 0.043338 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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