一直对php性能优化方面挺感兴趣,整理下我所知道的与大家分享。
首先得知道影响性能的因素:
- Web服务器
- 并发处理能力
- 高负载的能力
- 负载均衡的能力
- 动态内容与静态内容的处理能力
- Web 服务器部署
- DataBase 服务器
- 并发访问
- 数据库服务器的部署
- 数据库的 shema 架构与的表设计是否合理
- 数据检索
- 程序/语言
关于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版本问题。
本文分享了21条PHP性能优化的实用建议,包括使用单引号替代双引号、尽可能使用静态方法、优化字符串操作等,帮助开发者在编码阶段就能有效提升PHP应用的性能。
2414

被折叠的 条评论
为什么被折叠?



