Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36056
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 217
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-05 17:05
文章分类
文章存档

2013年(30)

我的朋友

分类: PHP

2013-08-13 11:23:42

  使用PHP的最大1个上风就是速率快。一样平常情况下,PHP老是具备富余的速率支持Web模式消息生成,良多时分甚至无奈找出比它更快的方法。然而,背地对庞大的拜访量、高负荷的运用、有限的带宽,以及其他种种带来性能瓶颈的要素时,就需要思虑怎么样提高PHP的性能了。

  1、代码优化

  代码优化不光仅是写出干净和明晰的代码,而是对代码进行未必的简化。可以使用Zend Optimizer来踊跃搀扶帮助完成这些繁冗的工作。Zend Optimizer可以从Zend Technologies的web免费得到,但必需同意它的许可商定,由于它不是以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)是由Co妹妹unity Connect公司斥地的另一种免费缓存模块,目前版本是2.0.4,可以从获得。对于产品应用来说,它的性能很顽固,而且也能在很大程度上提高响应求告的速率。

  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函数。本文转自

阅读(215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~