提升PHP执行速度全面分析
2013-06-27 15:22来源:未知作者:mj3 阅读量:
PHP的长处之一是速度很快,关于通常的网站运用,能够说是现已足够了。不过若是站点的拜访量很高、带宽窄或许其它的要素令效劳器发生功用瓶颈的时分,你能够得想想其它的办法来进一步进步PHP的速度了。这篇文章将从几个方面介绍怎样做到这一点,然后令用户阅读的时分愈加“爽”。
代码优化
怎样写更洁净的代码,这一点我想每个人都明白,在需求速度的时分,你能够现已在PHP源代码的优化上面做了不少的作业,这里所提出的是,这个烦琐的作业能够交由其它东西来完结。这即是Zend Optimizer,此程序能够从Zend Technologies的网站(http://www.zend.com/)免费得到。它的原理很简略,通过检测Zend引擎发生的中间代码,而且优化它来得到更高的履行速度。我以为优化代码是一项颇烦琐的作业,而且优化后的代码能够变得难以知道,尤其是当你放下该PHP程序一段时间后,突然间客户需求你做一些修正时,能够你自个也不懂了;-)。因而我主张你在PHP的源代码较为杂乱的时分,用Zend Optimizer来做这个优化的作业,优点是它不会令你的代码变得杂乱难明。php视频教程
装置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源代码修正时,缓冲的模块能够察觉到这些改动,而且从头载入相同,因而你不必忧虑客户得到的是旧版别的程序。这些缓冲的模块的确不错,可是我大概选用哪一种呢?下面别离介绍一下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运用的功用现已得到了很大的进步,如今该从另一个方面来思考了:下载速度。若是你的运用仅仅在公司内跑,一切的客户都运用100Mb/s的以太网衔接到效劳器,这能够不是一个疑问,可是若是你的客户中有运用慢速的modem衔接的,你就要思考运用内容紧缩这个办法了。
依据IETF的标准,大多数的阅读器都撑持gzip的内
容紧缩。这意味着你在将web的内容发给客户的阅读器前,能够先运用gzip进行紧缩,阅读器在接纳的时分就会主动解压数据,而且令用户看到本来的页面。相同,紧缩web页面的内容也有几个不相同的办法。
mod_gzip是Remote Communications(http://www.phpbuilder.com/columns/www.remotecommunications.com)免费供给的一个Apache模块,它能够紧缩静态的web页面。它作业得极好,你只需求将它和apache一同编译就行了(或许将它作为一个DSO运用)。Remotecommunications的人说它还能够紧缩动态的内容,包含mod_php, mod_perl等。不过我尝试了一下,看来并不可。我在mod_gzip的邮件列表中知道到,这个bug将在下一个版别中批改(我想大概是1.3.14.6f版别)。不过你依然能够用它作静态内容的紧缩。
不过咱们还想紧缩动态的内容,因而咱们有必要找别的的办法。一个办法是运用class.gzip encode.php(http://leknor.com/code/),只需在你的PHP脚本中的最初和结束调用这个PHP类,就能够紧缩你的页面内容。若是整个站点都需求这样的紧缩,你能够在你的php.ini文件中的auto_prepend和auto_append中调用这些函数。它作业得极好,不过在负载很重的站点上,它显着会带来一点的体系开支。要具体知道它是怎样作业的,能够看一下它的类代码(你至少需求在编译PHP时参加zlib撑持)。作者在里面的阐明也非常具体,你能够得到任何需求知道的东西。
在近来,我也看到了一篇关于PHP输出缓冲的文章。它说的是PHP4.0.4推出了一种新的输出缓冲的处置手法--ob_gzhandler,它的效果和上面介绍的类相同,但区别是你只需在你的php.ini中运用以下的句法就行了:
output_handler = ob_gzhandler ;
这样将激活PHP的输出缓冲功用,而且紧缩一切它发送的东西。出于某些格外的缘由,若是你不想在这里设置的话,只在需求的地刚才改动这个默认设置的话(不紧缩),只需在需求紧缩的PHP源码目录中,修正一下.htaccess文件就行了,运用的句法如下:
php_value output_handler ob_gzhandler
...或许直接在你的PHP代码中调用它,以下面的办法:
ob_start("ob_gzhandler");
这个输出缓冲处置的办法极好,而且不会为效劳器带来额定的体系开支。我非常主张你运用这种办法。它的改动能够用以下的比如阐明,若是客户运用的是28.8K的modem的话,通过这个处置,他将会以为突然间换成了一个ISDN接入相同。要注意的一点是:Netscape Communicator并不撑持图象的紧缩,所以将显现不出来。因而除非你的客户悉数运用Internet Explorer,不然你有必要制止紧缩jpeg和gif图象。其它文件的紧缩大概没有疑问,可是我主张你最佳测验一下,格外是阅读器运用了不常见的插件或许是少人用的阅读器。
Zend Technologies的在线商铺在本年1月24开通了,而且售卖一些与PHP关联的风趣商品。包含前面说到的Zend Cache,Zend Encoder(简略说来,是PHP代码的编译器,能够发生编译的类,这样你就能够售卖给顾客而不必忧虑走漏源代码。在需求运转这些类的web效劳器上,即将运用Zend Encoder Runtime来解码),Zend Ide(一个为PHP而设的集成化开发环境,带有许多强壮的功用),还有为PHP开发者供给的撑持效劳。
定论
运用这篇文章说到的技能,你将能够极大地进步站点的功用,不过请注意以下几点:
1.瓶颈或许不在PHP,你需求调查运用中的每个目标(例如数据库)
2.一个web效劳器的功用都是有约束的,因而,不要以为功用欠好即是PHP的缘由,也能够是拜访量很大,你的效劳器需求晋级了,或许思考运用负载均衡的体系(将会花许多钱)
3.不要以为内容紧缩不重要,在100Mb/s的局域网中,你的PHP运用或许功用极好,但要思考到运用慢速modem的用户。
本文章内容来源:新程PHP培训 http://www.phppx.com
代码优化
怎样写更洁净的代码,这一点我想每个人都明白,在需求速度的时分,你能够现已在PHP源代码的优化上面做了不少的作业,这里所提出的是,这个烦琐的作业能够交由其它东西来完结。这即是Zend Optimizer,此程序能够从Zend Technologies的网站(http://www.zend.com/)免费得到。它的原理很简略,通过检测Zend引擎发生的中间代码,而且优化它来得到更高的履行速度。我以为优化代码是一项颇烦琐的作业,而且优化后的代码能够变得难以知道,尤其是当你放下该PHP程序一段时间后,突然间客户需求你做一些修正时,能够你自个也不懂了;-)。因而我主张你在PHP的源代码较为杂乱的时分,用Zend Optimizer来做这个优化的作业,优点是它不会令你的代码变得杂乱难明。php视频教程
装置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源代码修正时,缓冲的模块能够察觉到这些改动,而且从头载入相同,因而你不必忧虑客户得到的是旧版别的程序。这些缓冲的模块的确不错,可是我大概选用哪一种呢?下面别离介绍一下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运用的功用现已得到了很大的进步,如今该从另一个方面来思考了:下载速度。若是你的运用仅仅在公司内跑,一切的客户都运用100Mb/s的以太网衔接到效劳器,这能够不是一个疑问,可是若是你的客户中有运用慢速的modem衔接的,你就要思考运用内容紧缩这个办法了。
依据IETF的标准,大多数的阅读器都撑持gzip的内
容紧缩。这意味着你在将web的内容发给客户的阅读器前,能够先运用gzip进行紧缩,阅读器在接纳的时分就会主动解压数据,而且令用户看到本来的页面。相同,紧缩web页面的内容也有几个不相同的办法。
mod_gzip是Remote Communications(http://www.phpbuilder.com/columns/www.remotecommunications.com)免费供给的一个Apache模块,它能够紧缩静态的web页面。它作业得极好,你只需求将它和apache一同编译就行了(或许将它作为一个DSO运用)。Remotecommunications的人说它还能够紧缩动态的内容,包含mod_php, mod_perl等。不过我尝试了一下,看来并不可。我在mod_gzip的邮件列表中知道到,这个bug将在下一个版别中批改(我想大概是1.3.14.6f版别)。不过你依然能够用它作静态内容的紧缩。
不过咱们还想紧缩动态的内容,因而咱们有必要找别的的办法。一个办法是运用class.gzip encode.php(http://leknor.com/code/),只需在你的PHP脚本中的最初和结束调用这个PHP类,就能够紧缩你的页面内容。若是整个站点都需求这样的紧缩,你能够在你的php.ini文件中的auto_prepend和auto_append中调用这些函数。它作业得极好,不过在负载很重的站点上,它显着会带来一点的体系开支。要具体知道它是怎样作业的,能够看一下它的类代码(你至少需求在编译PHP时参加zlib撑持)。作者在里面的阐明也非常具体,你能够得到任何需求知道的东西。
在近来,我也看到了一篇关于PHP输出缓冲的文章。它说的是PHP4.0.4推出了一种新的输出缓冲的处置手法--ob_gzhandler,它的效果和上面介绍的类相同,但区别是你只需在你的php.ini中运用以下的句法就行了:
output_handler = ob_gzhandler ;
这样将激活PHP的输出缓冲功用,而且紧缩一切它发送的东西。出于某些格外的缘由,若是你不想在这里设置的话,只在需求的地刚才改动这个默认设置的话(不紧缩),只需在需求紧缩的PHP源码目录中,修正一下.htaccess文件就行了,运用的句法如下:
php_value output_handler ob_gzhandler
...或许直接在你的PHP代码中调用它,以下面的办法:
ob_start("ob_gzhandler");
这个输出缓冲处置的办法极好,而且不会为效劳器带来额定的体系开支。我非常主张你运用这种办法。它的改动能够用以下的比如阐明,若是客户运用的是28.8K的modem的话,通过这个处置,他将会以为突然间换成了一个ISDN接入相同。要注意的一点是:Netscape Communicator并不撑持图象的紧缩,所以将显现不出来。因而除非你的客户悉数运用Internet Explorer,不然你有必要制止紧缩jpeg和gif图象。其它文件的紧缩大概没有疑问,可是我主张你最佳测验一下,格外是阅读器运用了不常见的插件或许是少人用的阅读器。
Zend Technologies的在线商铺在本年1月24开通了,而且售卖一些与PHP关联的风趣商品。包含前面说到的Zend Cache,Zend Encoder(简略说来,是PHP代码的编译器,能够发生编译的类,这样你就能够售卖给顾客而不必忧虑走漏源代码。在需求运转这些类的web效劳器上,即将运用Zend Encoder Runtime来解码),Zend Ide(一个为PHP而设的集成化开发环境,带有许多强壮的功用),还有为PHP开发者供给的撑持效劳。
定论
运用这篇文章说到的技能,你将能够极大地进步站点的功用,不过请注意以下几点:
1.瓶颈或许不在PHP,你需求调查运用中的每个目标(例如数据库)
2.一个web效劳器的功用都是有约束的,因而,不要以为功用欠好即是PHP的缘由,也能够是拜访量很大,你的效劳器需求晋级了,或许思考运用负载均衡的体系(将会花许多钱)
3.不要以为内容紧缩不重要,在100Mb/s的局域网中,你的PHP运用或许功用极好,但要思考到运用慢速modem的用户。
本文章内容来源:新程PHP培训 http://www.phppx.com
责任编辑:LBR3753

相关文章
职场女性怀孕该不该离职?准妈妈该如何平衡家庭和事业?
最近,著名网络红人papi酱在更新的视频中官宣自己怀孕了,令粉丝们激动不已。视频中,papi酱提到的职场女性不敢怀孕的现象,惹来了不少网友的议论: 有人认为,女性怀孕...
2019年12月16日
秋季重养肺:为何代谢科医生要劝糖友少吃生姜?给你几个原因
得了糖尿病,全身的血管就泡在了糖水中,就像腌肉一样,高糖把血管壁细胞的水分吸出来,让血管僵硬变脆。高血糖促使脂肪分解加速,导致高血脂,让血管以每年3%-4%的速度...
2019年12月14日
实至名归!福斯多蝉联“2018-2019年度家庭常备药上榜品牌”
12月 5 日,由家庭医生在线、医药经济报和新生代市场检测机构携手主办的 2018-2019 年度家庭常备药品评选活动榜单公示大会暨颁奖典礼在重庆举行。 本次活动历时 4 个月,最终...
2019年12月14日
常吃中药调理的人,这6禁忌最好注意一下
中药是起源于我国的一个传统的治疗方法,现在很多人都会使用中药来调理、治疗身体。在喝中药的时候,其实是存在很多禁忌事情的,接下来就一起了解下吧。 喝中药的禁忌...
2019年11月16日
中医:判断肺部好不好,四看就知道,不妨了解
最近有个30多岁的小伙子去看门诊,小伙子年纪轻轻,但是看上去脸色苍白、嘴唇发紫,而且稍微一活动就出现呼吸困难的情况。当他伸出手时,每根手指都粗得像一个鼓槌,医...
2019年11月16日

热门文章
-
1.降压药哪种好?高血压患者怎么选降压药?
- 1
- 降压药哪种好?高血压患者怎么选降压药?
- 2019年11月16日
- 1
-
2.高血压吃什么好?多吃这些水果有助降血压
- 2
- 高血压吃什么好?多吃这些水果有助降血压
- 2019年11月16日
- 2
-
3.高血压吃什么好?高血压患者的秋冬饮食策略
- 3
- 高血压吃什么好?高血压患者的秋冬饮食策略
- 2019年11月16日
- 3
-
4.得了糖尿病该怎么办?先挂个内分泌科看看
- 5
- 得了糖尿病该怎么办?先挂个内分泌科看看
- 2019年11月16日
- 5
-
5.你知道糖尿病这四大误区吗?
- 5
- 你知道糖尿病这四大误区吗?
- 2019年11月16日
- 5
-
6.记住这三个症状,帮你及早发现糖尿病足
- 6
- 记住这三个症状,帮你及早发现糖尿病足
- 2019年11月16日
- 6
-
7.有关纯素生酮饮食,您想知道的都在这里
- 7
- 有关纯素生酮饮食,您想知道的都在这里
- 2019年11月16日
- 7
-
8.引起高血糖的3个原因,糖尿病患者更需要注意!
- 8
- 引起高血糖的3个原因,糖尿病患者更需要注意!
- 2019年11月15日
- 8
-
9.高颜实力派:XWAVES小蛮腰SE冲牙器开箱评测
- 9
- 高颜实力派:XWAVES小蛮腰SE冲牙器开箱评测
- 2019年07月15日
- 9
-
10.【喜报】苏州国际精英周开幕,好活科技董事长朱江荣
- 10
- 【喜报】苏州国际精英周开幕,好活科技董事长朱江荣
- 2019年07月11日
- 10

热门图文
-
职场女性怀孕该不该离职?准妈妈该如何平衡家庭和事
2019年12月16日
-
秋季重养肺:为何代谢科医生要劝糖友少吃生姜?给你
2019年12月14日
-
实至名归!福斯多蝉联“2018-2019年度家庭常备药上榜品
2019年12月14日
-
常吃中药调理的人,这6禁忌最好注意一下
2019年11月16日
-
中医:判断肺部好不好,四看就知道,不妨了解
2019年11月16日
-
提醒:脚底按摩好处虽多,但这4点禁忌最好别碰
2019年11月16日
-
荨麻疹反反复复,是什么原因?荨麻疹用药要注意!
2019年11月16日
-
牛皮癣为什么冬重夏轻?四个因素影响病发
2019年11月16日

图文推荐
-
职场女性怀孕该不该离职?准妈妈该如何平衡家庭和事
2019年12月16日
-
教大家几个简单的瘦腰动作
2019年11月16日
-
幸福感来源于哪里?小心4种情绪魔鬼,剥夺了你的幸福
2019年11月16日
-
得了糖尿病该怎么办?先挂个内分泌科看看
2019年11月16日
-
引起高血糖的3个原因,糖尿病患者更需要注意!
2019年11月15日
-
妊娠糖尿病:“甜蜜”的孕期,当心高血糖危机
2019年11月15日
-
梦遗频繁是病吗?频繁梦遗,这些原因要知道
2019年11月15日
-
女性胸部胀痛,不同时期有不同的原因!
2019年11月15日