找回密码
 成为会员

新浪微博登陆

只需一步, 快速开始

搜索
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋

加速你的PHP脚本

looker 2009-7-31 11:24:52
原文作者:* 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。他会告诉你脚本运行的耗时分析和哪个部分用了最多的时间。这让你很简单就能找到你代码中的瓶颈。
您需要登录后才可以回帖 立即登录 新浪微博登陆
小帖士
如果你不是特别对他的每一句话感兴趣,不要随意用"关注"人的功能,因为关注以后,他的所有发帖回帖都会以通知的方式提醒你的!
统计信息
  • 会员数: 4661 个
  • 话题数: 8709 篇
  • 巅峰数: 8 人
返回顶部