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实现图象锐化代码
Jun 14 PHP
PHP去除数组中重复的元素并按键名排序函数
Aug 18 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
Linux系统下PHP-FPM的安装和配置教程
Aug 17 PHP
PHP代码优化技巧小结
Sep 29 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
PHP使用递归按层级查找数据的方法
Nov 10 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php学习之数据类型之间的转换代码
2011/05/29 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
JS前端加密算法示例
2016/12/22 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
Android interview questions
2016/12/25 面试题
医学生自我鉴定范文
2014/03/26 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
环卫个人总结
2015/03/03 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android