快速业务通道

PHP性能优化总结

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-23

  1、 对许多代码文件说,特别是含有很多包含文件(include or require)。它们需要花费更多的时间和解析并产生中间代码。

  2、 即使PHP代码文件没有发生改变,这个执行过程还会严格的按照流程执行。也就是说,无论你的应该程序是否发生改变,每次调用的时候,都需要重新编译生成opcode码。(其实这就是编译缓存存在的理由)

  3、 这个流程不仅仅发生在主要的代码文件,对于每一次的include和require来说,都会执行这个流程。(这是可以继续优化的)

  那些地方可以优化呢?

  1、将mod_php fast-cgi化,避免每次都要加载这个模块,这个模块还要每次都去初始化php的解释环境。

  2、缓存php文件的opcode码,这样话,避免每次都去编译。

  APC可用用来实现第2点。编译缓存去掉了执行PHP过程中的解析过程,所以它对含有大量PHP代码的应用程序是非常有效的。通常情况下可以提升2-3倍以上的速度。对于包含大量include文件的项目,编译缓存更现实出它的优越性。

  注:include并不会被编译缓存进行缓存。比如现在有两个文件:main.php 和tobeInclude.php,其中main.php中有这样的语句include tobeInclude.php’。假设中间码的后缀为.op(实际上不是这样)。那么加上缓存cache后 main.php=>main.op ,tobeInclude.php=>tobeInclude.op。但是PHP在执行main.php的时候,她还是需要去解析main.op中的include命令,去调用tobeInclude.op的内容。具体流程是这样的。

  …=>执行main.op=>执行tobeInclude.op=>…

  而不是之间简单的执行main.op

  所以说“过多的include文件会降低程序性能的”。

  APC的具体配置。

  Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。

  APC 官方网站为 http://pecl.php.net/package/apc

  1、安装

  以PHP extension 形式安装

  phpize

  ./configure --enable-apc --enable-apc-mmap

  make

  make install

  生成.so,将.so拷贝到php引用modules的目录下,修改权限755

  2、配置

  apc.enabled boolean

  apc.optimization optimization

  选项在脚本中可以改变

  APC PHP.ini配置选项详解

  [APC]

  ; Alternative PHP Cache 用于缓存和优化PHP中间代码

  apc.cache_by_default = On

  ;SYS

  ; 是否默认对所有文件启用缓冲。

  ; 若设为Off并与以加号开头的apc.filters指令一起用,则文件仅在匹配过滤器时才被缓存。

  apc.enable_cli = Off

  ;SYS

  ; 是否为CLI版本启用APC功能,仅用于测试和调试目的才打开此指令。

  apc.enabled = On

  ; 是否启用APC,如果APC被静态编译进PHP又想禁用它,这是唯一的办法。

  apc.file_update_protection = 2

  ;SYS

  ; 当你在一个运行中的服务器上修改文件时,你应当执行原子操作。

  ; 也就是先写进一个临时文件,然后将该文件重命名(mv)到最终的名字。

  ; 文本编辑器以及 cp, tar 等程序却并不是这样操作的,从而导致有可能缓冲了残缺的文件。

  ; 默认值 2 表示在访问文件时如果发现修改时间距离访问时间小于 2 秒则不做缓冲。

  ; 那个不幸的访问者可能得到残缺的内容,但是这种坏影响却不会通过缓存扩大化。

  ; 如果你能确保所有的更新操作都是原子操作,那么可以用 0 关闭此特性。

  ; 如果你的系统由于大量的IO操作导致更新缓慢,你就需要增大此值。

  apc.filters =

  ;SYS

  ; 一个以逗号分隔的POSIX扩展正则表达式列表。

  ; 如果源文件名与任意一个模式匹配,则该文件不被缓存。

  ; 注意,用来匹配的文件名

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号