php提高网站效率的技巧


Posted in PHP onSeptember 29, 2015

程序员在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少。往往我们在追求这些的同时却失去了很多东西。优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。以下就几点PHP的优化做下总结:
1、in_array的用法 
      避免在大的数组上使用in_array(),同时避免在循环中对包含20个以上元素的数组使用这个函数。in_array()会非常消耗资源.对于小的数组这种影响可能很小,但是在一个循环中检查大数组可能会需要好几秒钟的时间。如果您确实需要这个功能,请使用isset()来查找数组元素。实际上是使用键名来查询键值。调用isset($array[$var])会比in_array($var,array_keys($array))要快得多。
 
2、数组键名
      在PHP中,使用不经单引号包含的字符串作为数组键名是合法的,但是我们不希望如此--键名应该总是由单引号包含而避免引起混淆。注意这是使用一个字符串,而不是使用变量做键名的情况。

例如:

// 不好的写法
$foo = $assoc_array[blah];
// 好的写法
$foo = $assoc_array['blah'];
// 不好的写法
$foo = $assoc_array["$var"];
// 好的写法
$foo = $assoc_array[$var];

3、字符串表达
       在PHP中用两种不同的方式来表示一个字符串-单引号或者双引号。主要的区别在于语法解释器会对双引号表示的字符串进行变量替换,而不会处理单引号表示的字符串。因此您应该总是使用单引号,除非您真的需要在字符串中处理变量。这样,我们可以减少程序运行消耗,因为语法解释器不需要每次多处理一大堆根本没有变量的字符串。 
      同样,如果您在函数调用中使用了一个字符串变量作为参数,您不需要将这个变量包含在引号里。这会导致语法解释器多做好多无用功。记住,几乎所有双引号中的转义符对于单引号都是无效的。您需要留意以上的规则,但是有时候为了代码的可读性,可以适当的破例。

例如:

// 不好的写法
$str = "This is a really long string with no variables for the parser to find.";
do_stuff("$str");
// 好的写法
$str = 'This is a really long string with no variables for the parser to find.';
do_stuff($str);
// 有时候单引号不是那么合适
$post_url = $phpbb_root_path . 'posting.' . $phpEx . '?mode=' . $mode . '&start=' . $start;
// 双引号有时候能让代码行更集中
$post_url = "{$phpbb_root_path}posting.$phpEx?mode=$mode&start=$start";

4、循环定义中的操作 
      在比较部分如果存在运算请一定要进行优化。因为这部分会在循环中的每一步进行操作:

// 在每次循环中sizeof函数都要被调用
 for ($i = 0; $i < sizeof($post_data); $i++)
 {
  do_something();
 }
// 您可以在循环起始部分对这个不变的量赋值
 for ($i = 0, $size = sizeof($post_data); $i < $size; $i++)
 {
  do_something();
 }

5、分支判断,switchcase好于ifelse 
      使用分支语句要比用很多ifelse好很多。
 
6、不要滥用@操作符
      不要滥用@操作符,看上去很简单,但实际上用@比不用@效率要差几倍。
      特别不要在循环中使用@。
 
7、获取时间的方法 
      很多时候我们习惯使用time()获取当前时间,但time()终归是一个函数,不如直接用$_SERVER['REQUEST_TIME']好一点。
 
8、字符串长度判断
两种写法:
(1)if(strlen($str) < 5){/* do something */}
(2)if(isset($str[5])){ /* do something */ }

以上是小编在网上整理的php优化技巧,希望对大家的学习有所帮助!

PHP 相关文章推荐
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
浅析php变量作用域的一些问题
Aug 08 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
php常用表单验证类用法实例
Jun 18 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
Laravel 队列使用的实现
Jan 08 PHP
PHP工厂模式的日常使用
Mar 20 PHP
laravel开发环境homestead搭建过程详解
Jul 03 PHP
四个PHP非常实用的功能
Sep 29 #PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 #PHP
PHP+AJAX实现投票功能的方法
Sep 28 #PHP
WIFI万能钥匙密码查询接口实例
Sep 28 #PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 #PHP
培养自己的php编码规范
Sep 28 #PHP
ThinkPHP数据操作方法总结
Sep 28 #PHP
You might like
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php上传文件常见问题总结
2015/02/03 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
班级道德讲堂实施方案
2014/02/24 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
教师个人事迹材料
2014/12/17 职场文书
租赁协议书
2015/01/27 职场文书
避暑山庄导游词
2015/02/04 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
Python借助with语句实现代码段只执行有限次
2022/03/23 Python