提高PHP运行速度的一些小技巧分享

  使用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函数。

时间: 2024-10-22 20:37:02

提高PHP运行速度的一些小技巧分享的相关文章

提高php运行速度的一些小技巧分享_php技巧

1.代码优化 代码优化不仅仅是写出干净和清晰的代码,而是对代码进行一定的简化.可以使用Zend Optimizer来自动帮助完成这些繁杂的工作.Zend Optimizer可以从Zend Technologies的网站http://www.zend.com/免费得到,但必须同意它的许可约定,因为它不是以GPL方式发行的.它的原理很简单,即通过检测Zend引擎产生的中间代码,并对它进行优化,从而获得更高的执行速度. 在使用了Zend Optimizer后,复杂的PHP源程序的执行效率马上会得到显著

六个常用的Excel小技巧分享

  六个常用的Excel小技巧分享          1.自动标出不及格分数 假定需用红色字体显示60以下分数,蓝色字体显示60以上分数. Ctrl+1,设置单元格格式→自定义,类型输入框中输入: [蓝色][>=60];[红色][<60] 2.快速输入产品编号 如某类产品型号为"ABC-1245",产品型号均有固定前缀"ABC-",大量录入时,可设置单元格免去固定前缀输入. 按Ctrl+1,设置单元格格式→自定义,类型输入框中输入: "ABC-

word表格拆分小技巧分享

  word表格拆分小技巧分享         1.拆分表格 在word中插入的表格,如果需要拆分成两个,只需要选取某行的单元格,按ctrl+shift+回车键,即可在该行上面添加一个空行. 拆分前 拆分后 2.在表格中间插入一行 光标放在表格该行后换行符前,按回车即可在下面插入一行. 3.在表格最后添加一行 选取表格的最后一个单元格,按tab键即要新增一行. 增加后 4.标题行重复 如果想让每一页都显示标题行.选取一行或多行,表格工具 - 布局 - 属性 - 选取"在每页顶端..."

巧用高反差保留提高照片亮度和清晰度小技巧

  巧用高反差保留提高照片亮度和清晰度小技巧 "高反差保留"滤镜的作用就是提取照片中的反差,反差大的保留并加强,反差越大的地方提取出来的图案效果越明显,反差小的地方给虚掉提取出来就是一片灰色.朋友们如果需要学习更多"高反差保留"滤镜的知识请在网上搜索一下. 本帖介绍用高反差保留提高照片亮度和清晰度小技巧,先看看两组效果对比,效果 2加了一层"滤色"操作. 效果1 原图 1 效果 2 原图 2 下面是实例操作. 一.在Photoshop打开原图,复

几个Ruby小技巧分享

  这篇文章主要介绍了几个Ruby小技巧分享,本文讲解了代码块的序列调用.主要是说array在block中的使用.Hash#fetch.创建代码段的散列等小技巧,需要的朋友可以参考下 代码块的序列调用 代码如下: def touch_down yield [3, 7] puts "touchdown!" end touch_down do |(first_down, second_down)| puts "#{first_down} yards on the run"

网站建设网页设计小技巧分享

网站建设网页设计小技巧分享.在网站建设的过程中我们会遇到很多问题,我们也会去解决各类问题.无论是网站设计还是代码编写.今天针对网站建设过程中我们会遇到的一些小问题,并给出一些简单的解决办法. Ie6不支持Png格式下的透明.效果图如下: 应用解析:有不少人都会对LOGO进行透明处理以融入head部分的渐变背景. 解决方案:采用JS代码实现或CSS滤镜功能,当然问题也存在部分,导致图片质成像量不高. 小技巧1:将透明的LOGO用高于IE6的浏览器打开网页,然后采用FF的PearlCrescentP

PowerShell使用小技巧分享_PowerShell

如何使用PowerShell修改Host文件 下面的命令, 为Host文件添加了一条记录, 让/sps2010/hostheader1/这个url指向server自己. 复制代码 代码如下: $url="http://sps2010/hostheader1/" if( (Get-Content $env:windir\System32\drivers\etc\hosts |?{$_ -imatch "\s$url"}) -eq $null){"`n127.

注释PHP和html混合代码的小技巧(分享)_php实例

我们在写php的时候有时候会遇到想要注释一部分的代码,是由html和PHP混合组成的,这时候如果一行一行去分开注释有点麻烦.但是又不敢删掉,这时候我们可以充分利用if语句去进行注释的功能 <?php if (1==2):?> //代码片段 <?php endif;?> 以上就是小编为大家带来的注释PHP和html混合代码的小技巧(分享)全部内容了,希望大家多多支持~ 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进

Illustrator实用性很强常用小技巧分享

给各位Illustrator软件的使用者们来详细的分享一下实用性很强的常用小技巧. 技巧分享:                   好了, 以上的信息就是小编给各位Illustrator的这一款软件的使用者们带来的详细的实用性很强的常用小技巧分享的全部内容了,各位看到这里的使用者们,小编相信各位现在是那是非常的清楚了吧,希望小编上面的技巧能够给各位带去有用的帮助.