-
优化 PHP 代码技能
添加时间:2013-5-31 点击量:优化 PHP 代码技能
1. 若是一个办法能被静态,那就声明他为静态的,速度可进步 1/4;
2. echo 的效力高于 print,因为 echo 没有返回值,print 返回一个整型;
3. 在轮回之前设置轮回的最大次数,而非在在轮回中;
4. 烧毁变量去开释内存,希罕是大的数组;
5. 避免应用像__get, __set, __autoload 等魔术办法;
6. requiere_once()斗劲耗资料;
7. 在 includes 和 requires 中应用绝对路径,如许在解析路径花的时候更少;
8. 若是你须要得 sexinsex 到脚本履行时的时候,¥_SERVER[REQUSET_TIME]优于 time();
9. 能应用字符处理惩罚函数的,尽量用他们,因为效力高于正则;//
10. str_replace 字符调换比正则调换 preg_replace 快,但 strtr 比 str_replace 又快 1/4;
11. 若是一个函数既能接管数组又能接管简单字符做为参数,例如字符调换,并且参数列表
不是太长,可以推敲多用一些简洁的调换语句,一次只调换一个字符,而不是接管数组
做为查找和调换参数。大事化小,1+1>2;
12. 用@袒护错误会降落脚本运行速度;
13. ¥row[id]比¥row[id]速度快 7 倍,建议养成数组键加引号的习惯;
14. 错误信息很有效;
15. 在轮回里别用函数,例如 For(¥x=0; ¥x < count(¥array); ¥x), count()函数在外面先策画;
16. 建树一个全局变量要比局部变量要慢 2 倍;
17. 建树一个对象属性(类里面的变量)例如(¥this- >prop++)比局部变量要慢 3 倍;
18. 建树一个未声明的局部变量要比一个初始化的局部变量慢 9-10 倍;
19. 明一个未被任何一个函数应用过的全局变量也会使机能降落( 和声明雷同数量的局部变
量一样),PHP 可能去搜检这个全局变量是否存在;
20. 办法的机能和在一个类里面定义的办法的数量没有关系,因为我添加 10 个或多个办法
到测试的类里面(这些办法在测试办法的前后)后机能没什么差别;
21. 在子类里办法的机能优于在基类中;
22. 只调用一个参数并且函数体为空的函数运行花费的时候便是 7-8 次¥localvar++运算,而
一个类似的办法(类里的函数)运行便是大约 15 次¥localvar++运算;
23. 当输出字符串时用逗号庖代点分别更快些。重视:这只对 echo 起感化,这个函数能接
受一些字符串作为参数;
24. 在 apache 办事器里一个 php 脚本页面比响应的 HTML 静态页面生成至少要多花 2-10 倍
的时候,建议多用些静态 HTML 页面和少量的脚步;
25. 除非你的安装了缓存,不然你的 php 脚本每次被接见都须要被重编译。建议安装个 php
缓存法度,如许通畴昔除一些反复的编译来很明显的进步你 20-100%的机能;
26. 建议用 memcached,高机能的分布式内存对象缓存体系,进步动态收集应用法度机能,
减轻数据库的肩负;
27. 应用 ip2long()和 long2ip()函数把 IP 地址转成整型存放进数据库而非字符型。这几乎能降
低 1/4 的存储空间。同时可以很轻易对地址进行排序和快速查找;
28. 应用 checkdnsrr()经由过程域名存在性来确认项目组 email 地址的有效性,这个内置函数能包管
每一个的域名对应一个 IP 地址;
29. 若是你在应用 php5 和 mysql4.1 以上的版本,推敲应用 mysql_的改进函数 mysqli_;
30. 试着喜好应用三元运算符(?:);
31. 在你想在重做你的项今朝,看看 PEAR 有没有你须要的。PEAR 是个重大的资料库,
很多 php 开辟者都知道;
32. 应用 highlight_file()能主动打印一份很好格局化的页面源代码的副本;
33. 应用 error_reporting(0)函数来预防潜伏的敏感信息显示给用户。幻想的错误呈报应当被
完全禁用在 php.ini 文件里。可是若是你在用一个共享的虚拟主机, php.ini 你不克不及批改,
那么你好添加 error_reporting(0) 函数,放在每个脚本文件的第一行 ( 或用
require_once()来加载)这能有效的保护敏感的 SQL 查询和路径在失足时不被显示;
34. 应用 gzcompress() 和 gzuncompress()对容量大的字符串进行紧缩(解压)在存进( 取出)数
据库时。这种内置的函数应用 gzip 算法能紧缩到 90%;
35. 经由过程参数变量地址得引用来使一个函数有多个返回值。你可以在变量前加个“&”来默示
按地址传递而非按值传递;
36. 应用 strlen()因为要调用一些其他操纵例如 lowercase 和 hash 表查询所以速度不是太好,
我们可以用 isset()来实现类似的功能,isset()速度优于 strlen();
彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》