php提高网站效率的技巧

所属分类: 网络编程 / PHP编程 阅读数: 1601
收藏 0 赞 0 分享

程序员在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少。往往我们在追求这些的同时却失去了很多东西。优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。以下就几点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实现的美国50个州选择列表实例

这篇文章主要介绍了php实现的美国50个州选择列表实例,可实现让当前州为选中状态的功能,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP使用递归生成文章树

写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.大概步骤如下:首先到数据库取数据,放到一个数组,然后把数据转化为一个树型状的数组,最后把这个树型状的数组转为html代码。下面我们来看个实例
收藏 0 赞 0 分享

wordpress安装过程中遇到中文乱码的处理方法

这篇文章主要介绍了wordpress安装过程中遇到中文乱码的处理方法,是个人项目中遇到的一个奇葩事件,经过一番研究,终于解决,这里记录下来分享给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

php的crc32函数使用时需要注意的问题(不然就是坑)

这篇文章主要介绍了php的crc32函数使用时需要注意的问题(不然就是坑) ,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP中把对象转换为关联数组代码分享

这篇文章主要介绍了PHP中把对象转换为关联数组代码分享,本文直接给出实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

php检测url是否存在的方法

这篇文章主要介绍了php检测url是否存在的方法,涉及php中get_headers及正则匹配的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

php获取twitter最新消息的方法

这篇文章主要介绍了php获取twitter最新消息的方法,涉及php操作curl及正则替换的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

php遍历CSV类实例

这篇文章主要介绍了php遍历CSV类,实例分析了php针对csv文件的打开、读取及遍历的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP使用mysqldump命令导出数据库

最近用php写一个数据备份的功能。做法是使用php的system函数执行mysqldump命令,进行备份,这里分享给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

PHP用反撇号执行外部命令

shell_exec() 命令行实际上仅是反撇号 ` 操作符的变体,如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部捕捉其他命令的输出。
收藏 0 赞 0 分享
查看更多