php性能优化

来源:互联网 发布:怎样修改手机游戏数据 编辑:程序博客网 时间:2024/06/06 13:08

一直对php性能优化方面挺感兴趣,整理下我所知道的与大家分享。

首先得知道影响性能的因素:

  • Web服务器
    • 并发处理能力
    • 高负载的能力
    • 负载均衡的能力
    • 动态内容与静态内容的处理能力
    • Web 服务器部署
  • DataBase 服务器
    • 并发访问
    • 数据库服务器的部署
    • 数据库的 shema 架构与的表设计是否合理
    • 数据检索
  • 程序/语言
优化的优先级:program->database->web sersver->os->client


关于web服务器和db优化,网上有很多大神的文章可供参考,这里只谈作为一个程序员,在编码的时候就应该注意的地方:

1. 用单引号代替双引号来包含字符串。
2. 如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。
    * static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。
3. $row['id'] 的速度是$row[id]的7倍。
4. echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。
5. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。
6. 注销那些不用的变量尤其是大数组,以便释放内存。
7. 如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME']要好于time()。
8. str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。
    * strtr跟字符长度有关系的,但是str_replace就没有关系
9. 用@屏蔽错误消息的做法非常低效,极其低效
10. 打开apache的mod_deflate模块,可以提高网页的浏览速度。
11. mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低 80%。
12. 数据库连接当使用完毕时应关掉,不要用长连接(任何时间记住关闭不需要的数据库连接)。
13. 递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。
14. 派生类中的方法运行起来要快于在基类中定义的同样的方法。
15. Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。
16. 除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。
17. 尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。
18. 当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言
19. 多维数组尽量不要循环嵌套赋值
20. 对global变量,应该用完就unset()掉
21. 在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题。

0 0
原创粉丝点击