提升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

相关文章
银行里有多少存款才算是中产阶级?
据我所知,能否称得上是中产阶级跟家中有没有银行存款,并没多大关系。因为,像美国中产阶级占比也很大,但是63%的人连1000元都拿不出来,34%没有银行存款,只有11%的人银行存款在...
2020年07月19日
AMBC全球首发让虚拟矿机和实体矿业并驾齐驱
千呼万唤始出来!2020年4月27日AMBC正式上线国际知名的数字交易平台BBX进行充值交易,AMBC作为一个面向全球发行矿业托底的数字资产,经过长期与合作伙伴的共同探索,AMBC已经在实体...
2020年06月28日
27省份平均工资出炉,京沪津非私营年均超10万元
据不完全统计,截至7月7日,全国至少已经有27个省份公布了2018年城镇非私营单位、私营单位就业人员年平均工资,其中北京、上海、天津的非私营单位年平均工资超10万元,暂居前三...
2020年06月28日
林志玲公布婚讯前常喝的田原香滴鸡精究竟是何来历 看了你就知道
田原香滴鸡精是来自台湾的食补品牌,最新代言人是林志玲。 田原香 品牌在亚洲范围内拥有 23 家门店,主要分布在香港、澳门、台湾、新加坡和中国大陆。 在台湾,田原香是...
2020年06月28日
三世同堂,这方庭院,满足了每位家庭成员的生活想象
对家庭的重视,是中国人传承千年的文化基因,而三世同堂则成为中国家庭理想生活的绝佳概括。 家庭 当奋斗了一天的都市新贵们在推开家门的那一刻,看到奔跑着来迎接自己...
2020年06月28日

热门文章
-
1.高颜实力派:XWAVES小蛮腰SE冲牙器开箱评测
- 1
- 高颜实力派:XWAVES小蛮腰SE冲牙器开箱评测
- 2019年07月15日
- 1
-
2.【喜报】苏州国际精英周开幕,好活科技董事长朱江荣
- 2
- 【喜报】苏州国际精英周开幕,好活科技董事长朱江荣
- 2019年07月11日
- 2
-
3.DataCanvas九章云极入围2019中国金融科技竞争力100强
- 3
- DataCanvas九章云极入围2019中国金融科技竞争力100强
- 2019年07月01日
- 3
-
4.续约日本棒球劲旅 中兴手机体育营销再启新征程
- 5
- 续约日本棒球劲旅 中兴手机体育营销再启新征程
- 2017年05月24日
- 5
-
5.热烈祝贺云系药械平台入驻销售员突破100名
- 5
- 热烈祝贺云系药械平台入驻销售员突破100名
- 2017年04月25日
- 5
-
6.SD-WAN商用正在迎来黄金时代
- 6
- SD-WAN商用正在迎来黄金时代
- 2017年03月13日
- 6
-
7.网速缩水遭客户投诉 长城宽带称高峰期上网慢正常
- 7
- 网速缩水遭客户投诉 长城宽带称高峰期上网慢正常
- 2014年07月21日
- 7
-
8.微信墙更名微现场 微信宝“跑马”惊全场
- 8
- 微信墙更名微现场 微信宝“跑马”惊全场
- 2014年04月24日
- 8
-
9.直击微信宝“跑马”:蒋子维专访实录
- 9
- 直击微信宝“跑马”:蒋子维专访实录
- 2014年04月24日
- 9
-
10.微信宝携手郑浩南 开启国际市场大门
- 10
- 微信宝携手郑浩南 开启国际市场大门
- 2014年04月24日
- 10

热门图文
-
银行里有多少存款才算是中产阶级?
2020年07月19日
-
AMBC全球首发让虚拟矿机和实体矿业并驾齐驱
2020年06月28日
-
27省份平均工资出炉,京沪津非私营年均超10万元
2020年06月28日
-
林志玲公布婚讯前常喝的田原香滴鸡精究竟是何来历
2020年06月28日
-
三世同堂,这方庭院,满足了每位家庭成员的生活想象
2020年06月28日
-
2018国潮宝宝锦绣大赏发布,邂逅《美邻》新刊
2020年06月28日
-
如云在天如水在瓶岁月静好乐而忘忧
2020年06月28日
-
聆鉴美好生活 | 金科京津冀《美邻》分享会成功举办
2020年06月28日

图文推荐
-
三世同堂,这方庭院,满足了每位家庭成员的生活想象
2020年06月28日
-
美国再出华为中兴禁令:拿这600亿补贴的运营商,再便
2019年11月23日
-
华为5G将迎强大对手,世界霸主卷土重来,想重夺第一
2019年11月23日
-
华为折叠屏手机单价炒到10万!折叠屏未来市场是赌局
2019年11月23日
-
百亿补贴换二十亿亏损?拼多多走上“越拼越亏”的不
2019年11月23日
-
海尔生物科创板过会了,但估值还有这些因素制约
2019年11月23日
-
庆祝中华人民共和国成立70周年大型成就展在京开幕
2019年09月24日
-
习近平在参观“伟大历程 辉煌成就——庆祝中华人民共
2019年09月24日