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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
php2html php生成静态页函数
Dec 08 PHP
PHP安全配置详细说明
Sep 26 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php cookie工作原理与实例详解
Jul 18 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
Yii2处理密码加密及验证的方法
2019/05/12 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
Javascript函数的参数
2015/07/16 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
详解webpack 最简打包结果分析
2019/02/20 Javascript
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
体育教育专业自荐信范文
2013/12/20 职场文书
创先争优制度
2014/01/21 职场文书
大学信息公开实施方案
2014/03/09 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
同学会邀请函模板
2015/01/30 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
导游词之五台山
2019/10/11 职场文书
JS实现数组去重的11种方法总结
2022/04/04 Javascript