优化PHP代码技巧的小结


Posted in PHP onJune 02, 2013

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

PHP 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
PHP4实际应用经验篇(2)
Oct 09 PHP
PHP 手机归属地查询 api
Feb 08 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
PHP定时执行计划任务的多种方法小结
Dec 19 PHP
PHP+MYSQL实现用户的增删改查
Mar 24 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
PHP线程的内存回收问题
Jul 08 PHP
ThinkPHP中session函数详解
Sep 14 PHP
php中关于换行的实例写法
Sep 26 PHP
PHP7 其他修改
Mar 09 PHP
PHP无限分类(树形类)的深入分析
Jun 02 #PHP
基于php无限分类的深入理解
Jun 02 #PHP
php curl的深入解析
Jun 02 #PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 #PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 #PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 #PHP
php源代码安装常见错误与解决办法分享
May 28 #PHP
You might like
Apache2 httpd.conf 中文版
2006/12/06 PHP
PHP通用检测函数集合
2011/02/08 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
PHP实现简易blog的制作
2016/10/24 PHP
php连接mysql数据库
2017/03/21 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
Python中__call__用法实例
2014/08/29 Python
python自动裁剪图像代码分享
2017/11/25 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
python如何编写win程序
2020/06/08 Python
Python接收手机短信的代码整理
2020/08/02 Python
学雷锋月活动总结
2014/04/25 职场文书
2014年党务公开方案
2014/05/08 职场文书
商务英语专业求职信
2014/06/26 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers