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编程语言开发动态WAP页面
Oct 09 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
php中自定义函数dump查看数组信息类似var_dump
Jan 27 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
php HTML无刷新提交表单
Apr 05 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
Feb 18 PHP
PHP单元测试配置与使用方法详解
Dec 27 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中常用数组处理方法实例分析
2008/08/30 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
Javascript从数组中随机取出不同元素的两种方法
2016/09/22 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
numpy 计算两个数组重复程度的方法
2018/11/07 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python在地图上画比例的实例详解
2020/11/13 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
初中家长评语大全
2014/12/26 职场文书
优秀员工自荐书
2015/03/06 职场文书
中学社团活动总结
2015/05/07 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
Pandas数据类型之category的用法
2021/06/28 Python
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
关于的python五子棋的算法
2022/05/02 Python