php

位置:IT落伍者 >> php >> 浏览文章

浅谈如何提高PHP的速度


发布日期:2023年03月23日
 
浅谈如何提高PHP的速度

使用PHP的最大个优势就是速度快一般情况下PHP总是具有足够的速度支持Web内容动态生成许多时候甚至无法找出比它更快的方法然而当面对庞大的访问量高负荷的应用有限的带宽以及其他各种带来性能瓶颈的因素时就需要考虑怎样提高PHP的性能了

代码优化

代码优化不仅仅是写出干净和清晰的代码而是对代码进行一定的简化可以使用Zend Optimizer来自动帮助完成这些繁杂的工作Zend Optimizer可以从Zend Technologies的网站免费得到但必须同意它的许可约定因为它不是以GPL方式发行的它的原理很简单即通过检测Zend引擎产生的中间代码并对它进行优化从而获得更高的执行速度

在使用了Zend Optimizer后复杂的PHP源程序的执行效率马上会得到显着提高缺点是优化后的代码可读性下降给代码修改带来困难

Zend Optimizer的安装方法非常简单只要根据用户使用的平台下载相关的预编译版本把下面2行代码加入到phpini文件中重新启动Web 服务器就行了:

  • zend_optimizeroptimization_level=
  • zend_extension=″/path/to/ZendOptimizerso″
  • zend_loaderenable=Off
  • 额外增加的第三行代码是可选的因为禁用zend_loader将会使优化速度更快需要注意的是只有在不使用Zend Encoder Runtime的时候才可以禁用zend_loader

    使用缓存

    如果PHP程序的规模很大那么提高速度的办法就是使用缓存现在已经有许多缓存方案可供选择其中包括Zend CacheAPC和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公司开发的另一种免费缓存模块目前版本是可以从获得对于产品应用来说它的性能很稳定而且也能在很大程度上提高响应请求的速度

    压缩网页内容

    影响站点的访问速度还有个重要因素那就是下载速度解决的办法就是压缩网页内容对于纯文本内容而言HTTP压缩技术可压缩至原大小的%以下从而提供%以上的数据传输节约虽然Web服务器会因为压缩导致CPU占用的略微上升但可以节约大量用于传输的网络IO

    根据IETF规范大部分浏览器都支持使用gzip压缩算法进行内容压缩也就是说可以先用gzip压缩网页内容然后发送到客户端浏览器浏览器在接收的时候会自动解压数据再显示页面这个过程对用户来说是完全透明的同样压缩Web页面的内容也有不同的方法

    Mod_gzip是1种开放源代码的标准的Apache模块也叫互联网内容加速模块可以将它和Apache一起编译也可以作为DSO使用相对于普通的浏览过程它可以节省%左右的流量Mod_gzip不仅可以压缩静态的内容如HTMLXML而且对动态生成的包括SQLJavaWMLVRML等产生的内容在服务器端进行实时压缩并传输其压缩效率惊人一般都为%~%

    压缩动态网页的内容还可以使用classgzip来对php文件编码classgzip通过在PHP脚本的开头和结尾调用它的一些函数来压缩网页内容如果整个站点都需要这样的压缩可以在phpini文件中的auto_prepend和auto_append中调用这些函数但是会占用一定的系统开销

    PHP推出了种新的输出缓沖的处理手段—ob_gzhandler它的作用和classgzip完全一样区别是可以直接把它加到phpini 文件中语法如下

  • output_handler=ob_gzhandler;
  • 这样将激活PHP的输出缓沖功能并在发送内容前进行压缩如果不想在这里设置只在需要的地方才改变这个默认设置(不压缩)只要在需要压缩的PHP源程序目录中修改一下htaccess文件就行了语法如下

  • php_valueoutput_handlerob_gzhandler
  • 或者直接在PHP代码中调用它

  • ob_start(″ob_gzhandler″);
  • 输出缓沖的效果确实很理想并且不会为服务器带来额外的系统开销要注意的一点是Netscape Communicator不支持图像的压缩因此除非知道访问者都使用Internet Explorer否则必须禁止压缩jpeg和gif图象

    其它技巧

    在编程时使用一些小技巧也可以加快PHP的运行速度

    )用i+=代替i=i+既符合c/c++的习惯效率相对还更高

    )尽可能使用PHP内部函数

    )能使用单引号字符串时尽量使用单引号字符串单引号字符串的效率要高于双引号字符串

    )用foreach代替while遍历数组foreach的效率明显高于while循环而且不需要调用reset函数

    上一篇:实用的15款开源PHP类库

    下一篇:php与paypal整合方法