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可逆加密/解密函数分享
Sep 25 PHP
深入PHP数据缓存的使用说明
May 10 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php.ini中的request_order推荐设置
May 10 PHP
PHP实现远程下载文件到本地
May 17 PHP
学习PHP Cookie处理函数
Aug 09 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
javascript实现滚动条效果
2020/03/24 Javascript
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
opencv实现简单人脸识别
2021/02/19 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
建筑系毕业生自我鉴定
2014/01/24 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
会计专业自荐信
2014/06/03 职场文书
文秘应届生求职信
2014/07/05 职场文书
思想品德评语大全
2014/12/31 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
劳动仲裁调解书
2015/05/20 职场文书
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA