具体先容PHP应用提速语言&工具

来源:互联网 / 作者:SKY / 2017-11-28 07:36 / 点击:
本文接头的就是怎样进一 步进步php应用的机能,给用户以更美好的赏识感觉。本文分三个方面(代码优化、缓存、内容压缩)叙述进步 PHP应用机能的各类技能,并先容各
CTO实习营 | 12月3-5日,深圳,是时辰成为优越的技能打点者了

我们都知道,速率快是PHP最大的利益。一样平常环境下PHP老是具有足够的速率支持Web内容动态天生,很多时辰你乃至无法找出比它更快的要领。

然而,当你不得不面临复杂的会见量、高负荷的应用、有限的带宽以及 其他各类带来机能瓶颈的身分时,你也许会问问本身是否可以做点什么让网站运行得更好。或者只要加上一个 很不起眼的免费模块,你的PHP应用机能以及Web处事器相应速率就会有明显的改进。

本文接头的就是怎样进一 步进步php应用的机能,给用户以更美好的赏识感觉。本文分三个方面(代码优化、缓存、内容压缩)叙述进步 PHP应用机能的各类技能,并先容各个规模的知名产物。

代码优化

起首我们来看看代码优化。留意,这里的代码优化可不是指把代码写得越发雅观大度,由于这生怕已经是 众所周知没有须要继承接头了;其它,假如你已经思量到了速率题目,很也许你早就对PHP的源代码作了一些优化。

不外,有些器材却可以或许自动地辅佐我们完成这些繁杂的事变,如Zend Optimizer就是这样一个器材。 Zend Optimizer可以从Zend Technologies免费获得,但你必需赞成它的容许约定,留意它不是以 GPL方法刊行。Zend Optimizer获取由Zend Engine运行时编译天生的中间代码,并对它举办优化, 从而使得中间代码具有更快的执行服从。

Zend Optimizer的安装要领很是简朴,你只需下载为本身所用平台提供的预编译版本,把下面两行代 码插手到php.ini,然后从头启动Web处事器即可:

zend_optimizer.optimization_level=15 

zend_extension="/path/to/ZendOptimizer.so" 

zend_loader.enable=Off 

这里特殊增进的第三行代码是可选的。榨取zend_loader好像可以或许让Zend Optimizer的速率更快一点 ,以是在php.ini中加上这行代码是值得的。留意:只有当你不行使Zend Encoder Runtime时,你才 可以禁用zend_loader。

缓存

假如你想要让本身复杂的PHP应用有更好的机能示意,回收缓存也是一种很好的要领。此刻已经有很多缓存 方案可供选择,个中包罗:Zend Cache,APC,和Afterburner Cache。

全部这些产物都属于“缓存模块”。当第一次呈现对.php文件的哀求时,它们会在Web处事器内存中生涯 PHP的中间代码,从此就用“颠末编译”的版原形应后继的哀求。这种要领确实可以或许改进应用的机能,由于它使 得磁盘会见量减低到了起码的水平(代码已经读取息争析),代码直接在内存中运利用得处事器相应哀求的速率大大进步。

虽然,缓存模块还会监督PHP源文件的变革,须要时从头缓存页面,从而防备了用户获得的页面仍 旧由过期的PHP代码天生。因为缓存模块可以或许明明地低落处事器的负载、进步PHP应用的相应服从,因此它们非 常得当于负载较大的网站行使。

怎样选择这些缓存产物

Zend Cache是Zend Technologies公司的贸易软件,而Zend Technologies就是前面提到的 谁人为我们提供PHP引擎和免费Zend Optimizer的公司。Zend Cache确实是名不虚传!对付大型的 PHP页面,你可以感受到第一次运行之后速率就会有所进步,并且处事器也会有更多的可用资源。遗憾的是这个 产物并难免费,不外在有些气象下它仍然是物超所值。

Afterburner Cache是来自Bware Technologies的免费缓存模块,当前这个产物照旧Beta版。 Afterburner Cache的做法看起来与Zend Cache差不多,但它对机能的改进水平(还)不能与 Zend Cache对比,并且它还不能与Zend Optimizer一路事变。

APC是Alternative PHP Cache的缩写,它是来自Community Connect的又一个免费缓存模 块。这个产物已经具有足够的不变性供正式场所行使,并且它看起来也能在很洪流平上进步相应哀求的速率。

内容压缩

前面我们接头了几种进步PHP应用机能的要领,下面来看看使得赏识者感想网站速率太慢的其它一个重要因 素:下载速率。假如PHP应用在内部Intranet上运行,并且每一台客户机都以100 MB/s的速率毗连随处事 器,那么下载速率应该不是什么题目。然而,假如处事器还要为慢腾腾的Modem用户提供处事,那么值得思量内 容压缩。

大大都赏识器都按照IETF尺度支持用gzip举办内容压缩。这意味着你可以用gzip压缩内容然而发送给 赏识器,由赏识器解压缩数据之后再表现页面,这整个进程对用户来说完全透明。至于处事器端的内容压缩, 此刻已经有很多差异的要领可供行使。

譬喻,来自Remote Communications的免费Apache模块mod_gzip就具有为支持这类内容编码的赏识器 压缩静态Web内容的手段。对付绝大大都静态Web内容,mod_gzip都很是有用。mod_gzip可以利便地编译到 Apache内里,也可以作为DSO行使。据Remote communications公司说,mod_gzip也可以或许压缩来自mod_php 、mod_perl等的动态内容。

我试了一次又一次,但看来照旧不可。我看了很多关于mod_gzip的论坛和文章,时代站长网,看 来到了mod_gzip的下一个版本(也许是1.3.14.6f)这个题目有望获得办理。在此之前,我们可以在网站的静态 部门行使mod_gzip。

然而偶然我们确实必要压缩动态内容,以是必需找找其他步伐。有一种步伐是行使class.gzip_encode.php ,这是一个可以用来压缩页面内容的PHP类,详细要领是在PHP剧本的开头和末端挪用该类的某些函数。假如要 在网站级实现这个方案,可以从php.ini文件的auto_prepend以及auto_append指令挪用这些函数。

这种要领虽 然有用,但它无疑为高负载的网站带来了更多的开销。关于怎样行使这个类的具体声名,请拜见它的源代码。 它的源代码声名相等完美,作者汇报了你全部你必需知道的工作。

PHP 4.0.4有一个新的输出缓存句柄ob_gzhandler,它与前面的类相似,但用法差异。行使 ob_gzhandler时要在php.ini中插手的内容如下:

output_handler = ob_gzhandler ; 

这行代码使得PHP激活输出缓存,并压缩它发送出去的全部内容。假如因为某种缘故起因你不想在php.ini中加上这行代码,你还可以通过PHP源文件地址目次的.htaccess文件改变默认的处事器举动(不压缩),语法如下 :

php_value output_handler ob_gzhandler 

可能是从PHP代码挪用,如下所示:

ob_start("ob_gzhandler"); 

阅读延展

1
3