} } }

    优化 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();


    彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
    分享到: