原文作者:* Home * About * Archives Zenk0
原文链接:Speeding up your PHP scripts
译者:玉米疯收
我从13岁就开始编写PHP代码,这些年里我见过很多不同风格不同标准的代码。然而大多时候他们还没有进行过优化。
这次我想聊聊如何让你的代码更优化,以降低服务器的负载。
编码要点
引号
尽可能的使用单引号,它比双引号快,因为PHP会在双引号包围的字符串中搜索变量。
在数组中也推荐使用单引号,因为它要比双引号和不加引号快。
Echo 与 print
Echo 比 print 快,尽可能的使用单引号,如果你在echo 命令中要用到连接,那就把它优化成多个参数相连。
print函数不能处理多个参数,所以,请别尝试。
- $name = 'zenk0';echo 'the user ', $name, ' has been selected for a special event.';//slower and more widely usedecho 'The user ' . $name . ' has been selected for a special event.';
复制代码
循环不要在循环体内,而是在循环体外定义 count 变量。如果不这样,你的计数函数每次循环都会调用。
- $array = array('one', 'two', 'three');$count = count($array);//slow : for($i=0; $i < count($array); $i++)for($i=0; $i < $count; $i++){echo array[$i];}
复制代码
简单条件判断如果你的条件比较简单,使用 switch 比用 if/else if/else 好多了。Includes 和 requires这儿有几种方法可以加速: 首先,用require_once比include_once慢多了。尽量在你的包含和引用中用全路径,这样可以省掉解析路径的开销。有三种方式可以用;你只要简单的设置一下include的路径。
- // Works as of PHP 4.3.0set_include_path('/inc'); // Works in all PHP versionsini_set('include_path', '/inc');
复制代码或者新建个用于包含的路径变量,并把它放到include连接起来。
- $include = '/home/user/www';include ($include . '/library/loader.php');
复制代码第三个例子:你也可以只获取当前文件的路径。
- $dir = dirname(__FILE__);include ($dir . '/library/loader.php');
复制代码处理字符串尽量使用 str_ 函数代替 preg_ 函数。要是你不用正则表达式,str_replace比preg_replace快多了。 但是strstr 比 str_replace快。尽量用这些函数来代替preg_函数: strpos, strpbrk, strncasecmp。如果你需要检查一个字符串的长度,巧妙的使用isset比strlen好多了。
- $str = 'have a nice day';//check if the string has more than 6 characters//slow, checks if the string has less than 7 characters.if(strlen($str) < 7)//fast, if there is no seventh character setif(!isset($str{6}))
复制代码这是因为,isset是一种语言结构,而strlen是一个函数。当然有一些工具可以帮忙:用 a code profiler。他会告诉你脚本运行的耗时分析和哪个部分用了最多的时间。这让你很简单就能找到你代码中的瓶颈。