PHP常用一部分优化技巧
PHP优化,提供以下几条,仅供大家参考:
1. 少用正则表达式,因为能用PHP函数的情况下,尽量用他们,效率高于正则。
没得说,正则最耗性能。
2. 尽量用单引号,因为一般字符串是没有变量的,使用双引号会导致性能不佳。
3. 使用isset代替strlen,在检验字符串长度时,我们一般会使用 strlen() 函数。虽然此函数执行起来相当快,因为它不做任何计算,但是,由于strlen()
是函数,多多少少会有些慢,所以在某些情况下,我们可以使用 isset() 技巧加速执行你的代码。
4.echo效率高于print,因为echo
没有返回值,print
返回一个整型。
5.在include
和require
中尽量使用绝对路径。因为包含相对路径,PHP会在include_path
里面遍历查找文件,会影响效率。
6. 在可以用file_get_contents()替代file()
、fopen()
、feof()
、fgets()
等系列方法的情况下,尽量用file_get_contents()
。因为他的效率高得多!
7. 在传参方面通过参数地址引用的方式,实现函数多个返回值,这比按值传递效率高。方法是在参数变量前加个 &
。
8. 使用选择分支语句(switch case)好于使用多个if,else if语句。
9. 尽量静态化,如果一个方法能被静态,那就声明它为静态的,速度可提高1/4
。
10. 使用$_SERVER变量,如果你需要得到脚本执行的时间,$_SERVER['REQUSET_TIME']
优于time()
。一个是现成就可以直接用,一个还需要函数得出的结果。
11.使用++$i
递增,当执行变量$i
的递增或递减时,$i++
会比++$i
慢一些。这种差异是PHP特有的。
12. 循环用foreach,尽量用foreach
代替while
和for
循环,效率更高。
13. 压缩输出,在php.ini中开启gzip压缩:
zlib.output_compression = On
zlib.output_compression_level = (level)
如果你使用apache,也可以**mod_gzip模块。
14. 静态化页面,Apache/Nginx解析一个PHP脚本的时间,要比解析一个静态HTML页面慢2
至10
倍。所以尽量使页面静态化,或使用静态HTML页面。
15. 提高性能的最简单的方式是不断升级、更新PHP版本。
16. 多多利用PHP的扩展
17. PHP缓存一般情况下,PHP脚本被PHP引擎编译后执行,会被转换成机器语言,也称为操作码。如果PHP脚本反复编译得到相同的结果,为什么不完全跳过编译过程呢?PHP加速器缓存了编译后的机器码,允许代码根据要求立即执行,而不经过繁琐的编译过程。对PHP开发人员而言,目前提供了两种可用的缓存方案。一种是APC(Alternative PHP Cache,可选PHP缓存),它是一个可以通过PEAR安装的开源加速器。另一种流行的方案是OPCode,也就是操作码缓存技术。
18. 仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)
19. 使用NoSQL缓存,Memchached或者Redis都可以。这些是高性能的分布式内存对象缓存系统,能提高动态网络应用程序性能,减轻数据库的负担。这对运算码 (OPcode)的缓存也很有用,使得脚本不必为每个请求重新编译。
20. echo 输出字符串用逗号代替点连接符更快些。虽然,echo
是一种语言结构,不是真正的函数。但是,它可以把逗号隔开的多个字符串当作“函数”参数传入,所以速度会更快。
21. 在循环里别用函数,因为函数现在外面计算。
22. 服务器使用Linux系统,这个我就不过多解释了。
23. 用i+=1代替i=i+1。符合c/c++的习惯,效率还高。
24. 数据库连接当使用完毕时应关掉,不要用长连接。
25.并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。
26.多维数组尽量不要循环嵌套赋值。
27.对global变量,应该用完就unset()掉
最后再提醒一下在代码优化的时候应该注意的事情:
1. 查询多次的最好缓存
因为可以提升效率,不用麻烦的在去数据库执行一次了。
2. 在写程序的时候更应该注重程序的扩展性,而不是追求速度。
3. 在优化你的代码之前,先看看跟数据库有关的部分,因为大多数应用程序的瓶颈在数据库而不是代码。
注意:优化还有很多,需要自己去发现,以上是自己开发阶段整理的,仅供参考。
上一篇: PHP脚本的8个技巧(3)_PHP教程