techsir 登陆 |注册|TS首页
  首页 快活林 猿氏悟语

加速你的PHP脚本

By: looker 发表于 2009-7-31 11:24:52 · 70716次点击   回复:0   
原文作者:* Home * About * Archives Zenk0
原文链接:Speeding up your PHP scripts
译者:玉米疯收

我从13岁就开始编写PHP代码,这些年里我见过很多不同风格不同标准的代码。然而大多时候他们还没有进行过优化。


这次我想聊聊如何让你的代码更优化,以降低服务器的负载。

编码要点

引号

尽可能的使用单引号,它比双引号快,因为PHP会在双引号包围的字符串中搜索变量。

在数组中也推荐使用单引号,因为它要比双引号和不加引号快。

Echo 与 print

Echo 比 print 快,尽可能的使用单引号,如果你在echo 命令中要用到连接,那就把它优化成多个参数相连。

print函数不能处理多个参数,所以,请别尝试。

  1. $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 变量。如果不这样,你的计数函数每次循环都会调用。
  1. $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的路径。
  1. // Works as of PHP 4.3.0set_include_path('/inc'); // Works in all PHP versionsini_set('include_path', '/inc');
复制代码
或者新建个用于包含的路径变量,并把它放到include连接起来。
  1. $include = '/home/user/www';include ($include . '/library/loader.php');
复制代码
第三个例子:你也可以只获取当前文件的路径。
  1. $dir = dirname(__FILE__);include ($dir . '/library/loader.php');
复制代码
处理字符串尽量使用 str_ 函数代替 preg_ 函数。要是你不用正则表达式,str_replace比preg_replace快多了。 但是strstr 比 str_replace快。尽量用这些函数来代替preg_函数: strpos, strpbrk, strncasecmp。如果你需要检查一个字符串的长度,巧妙的使用isset比strlen好多了。
  1. $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。他会告诉你脚本运行的耗时分析和哪个部分用了最多的时间。这让你很简单就能找到你代码中的瓶颈。
70716次点击
0个回复  |  直到 2009-7-31 11:24:52
添加一条新回复
您需要登录后才可以回帖 登录 | 成为会员 新浪微博登陆

标签云|手机版|科技先生 ( 京ICP备07036130号 Powered by Discuz! X )

GMT+8, 2024-5-19 02:49