php代码优化及php相关问题总结
1,在函数中,传递数组时PHPChina 开源社区门户%t.}l6_p6s7o
使用 return 比使用 global 要高效
e3Q X2?w.g0比如
(Qt0?%s1a\k/{*^0
9~zt3ff@/D@0function userloginfo($usertemp){PHPChina 开源社区门户Ti3CttZ }
$detail=explode("|",$usertemp);PHPChina 开源社区门户Nl4m+wk"f oM&_$w
return $detail;PHPChina 开源社区门户5C`Y k5F(Zpy N
}
oy/``eSxk0$login=userloginfo($userdb);
8S%Fl&CgIK0PHPChina 开源社区门户n2s\a[ O'v
比PHPChina 开源社区门户$DZ!{'d(At u
4xI/M4?*~0function userloginfo($usertemp){PHPChina 开源社区门户0}%i*O3Iu8S6E\7]k$z
global $detail;
;vr H?,](k0$detail=explode("|",$usertemp);PHPChina 开源社区门户"Q!lUh6Tea
}
p3dOc|*D*@%b`4nt0userloginfo($userdb);
4Jolk.h%H!Ah/N4I(f0
k.q$P9s^:v4C0PHPChina 开源社区门户-hf Sd@
要高效PHPChina 开源社区门户f#^%fmG!mZ i-z
2,(这个代码用于得到程序目录对应的网址,推荐使用)PHPChina 开源社区门户2rT!S2yB4lM'x
$urlarray=explode('/',$HTTP_SERVER_VARS['REQUEST_URI']);
;]5MW.C@B_Eg*wi0$urlcount=count($urlarray);unset($urlarray[$urlcount-1]);
!DV"u*T$nmr$`0$ofstarurl='http://'.$HTTP_SERVER_VARS['HTTP_HOST'].implode('/',$urlarray);PHPChina 开源社区门户~\[nN:z/\
Y!ZH{0R/U}Fw0这段代码比
WY'TP'eX7YKH0$pre_urlarray=explode('/',$HTTP_SERVER_VARS['HTTP_REFERER']);PHPChina 开源社区门户zESi_5r7TvE
$pre_url=array_pop($pre_urlarray);
rqNK0G&?M |/|0要高效
*BgwlXh HRO03,在循环中判断时,数值判断使用恒等要比等于高效
A*` Ta,Y2z:_to1Z0$a=2;$b=2;PHPChina 开源社区门户[5f6X"N2B9e
比如PHPChina 开源社区门户#p:SA,i$I4H3sc(V;p
if($a==$b)$c=$a;PHPChina 开源社区门户2J#\5X%NG9wt
比
.j6o Szx0if($a===$b)$c=$a;PHPChina 开源社区门户f8^ L!wI
高效PHPChina 开源社区门户h.w#A V`T \}?
4,mysql 查询时尽量使用where in 少用 limitPHPChina 开源社区门户)[?eI1ox'b
limit查多记录的前几条, 速度很快, 但是查询最面几条就会慢
9]-G+Gsm ][IZ!l x0使用in .在查询连续性记录,非常快, 非连续性记录第一次运行会稍微慢一点,但是之后将比较快!
U.C8Tb0d/fBQ m$s05,NT服务器数据操作稳定性不及unix/linux
w-`3\Q-J%G0PHPChina 开源社区门户't$z?^]
6,输出前使用尽量使用 ob_start(); 可以加快输出速度,适用NT或nuli/linux,对unlix类服务器 如果使用 ob_start('ob_gzhandler');输出效率将更高
?-j!o'h:x'@ cp0
.G/e'AWE07,判断的时候尽量使用if($a==他的值) 否定的时候尽量使用if(empty($a)),因为这样程序运行更快速PHPChina 开源社区门户#nv|#Z jy@
sv%r3?nQ.Wzd5[08,使用不等时 != 与 <> 效率相当
M!s4TW3ce]&X j0PHPChina 开源社区门户w9\6Z"y!Af!F#Qkr
9,个人经验得 使用 $a="11111111111111"; 的效率和 $a='11111111111111'; 相当.并不象书本说的相差很大
(^njb&GIR }5~u0
\8x*k*T8V}010,使用规范的SQL语句, 会有利于MySQL的解析PHPChina 开源社区门户EFT e%}1K.S
1l2s1L?3IsU,^&qv011,使用
*s:b{1Noj*`0PHPChina 开源社区门户o(B Y qS@
if($online){PHPChina 开源社区门户6N~U:qI @IX
$online1=$online;PHPChina 开源社区门户4hqM4y)Y*j
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);PHPChina 开源社区门户-e8[.~|qG4I
}
A8@OoY\T0PHPChina 开源社区门户.G&cX1c+v
PHPChina 开源社区门户W7X(c8eI5P do
COOKIE将马上生效PHPChina 开源社区门户 FM9Wo*S1h2Hx
使用PHPChina 开源社区门户7`4E Zs5AI4K'J9U
PHPChina 开源社区门户#e|beUb'g-M k
if($online)PHPChina 开源社区门户gBnQ;p1D(B?'U
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);
SJI&b6owxC]Wq0PHPChina 开源社区门户KiZ.|*X H
COOKIE需要再刷新一次才能生效PHPChina 开源社区门户(C0`]Z5]!KG
12,使用PHPChina 开源社区门户o!Au8|2?G
$handle=fopen($filename,wb);
cv`a r z VB0flock($handle,LOCK_SH);PHPChina 开源社区门户;DU DU4WU8?
$filedata=fread($handle,filesize($filename));PHPChina 开源社区门户WTCEwrwBy
fclose($handle);PHPChina 开源社区门户KVb+r Mu2]
PHPChina 开源社区门户go*|9aLVV
比PHPChina 开源社区门户G r#AFj;dT5m E
w/h_s-F0}0file($filename);
i ~%W){+r-^O:K e0无论在速度还是稳定上都要优秀
M6S@BD _013,截断字符串优化函数(可避免?字符出现)
r!f9E0G&IC0function substrs($content,$length) {
| J3N"m r0tH0if(strlen($content)>$length){
;V?~{%X0$num=0;PHPChina 开源社区门户+CL q2jQF
for($i=0;$i<$length-3;$i++) {PHPChina 开源社区门户0p R,u6h\5}b:t4hD
if(ord($content[$i])>127)$num++;PHPChina 开源社区门户8zl"T6x ?"m:BG
}PHPChina 开源社区门户3f[Pnz3K
$num%2==1 ? $content=substr($content,0,$length-4)
content=substr($content,0,$length-3);PHPChina 开源社区门户y9][+Bp
$content.=' ...';PHPChina 开源社区门户hXAoI!C{
}PHPChina 开源社区门户3|(A PT"L`)E%Vq
return $content;
使用 return 比使用 global 要高效
e3Q X2?w.g0比如
(Qt0?%s1a\k/{*^0
9~zt3ff@/D@0function userloginfo($usertemp){PHPChina 开源社区门户Ti3CttZ }
$detail=explode("|",$usertemp);PHPChina 开源社区门户Nl4m+wk"f oM&_$w
return $detail;PHPChina 开源社区门户5C`Y k5F(Zpy N
}
oy/``eSxk0$login=userloginfo($userdb);
8S%Fl&CgIK0PHPChina 开源社区门户n2s\a[ O'v
比PHPChina 开源社区门户$DZ!{'d(At u
4xI/M4?*~0function userloginfo($usertemp){PHPChina 开源社区门户0}%i*O3Iu8S6E\7]k$z
global $detail;
;vr H?,](k0$detail=explode("|",$usertemp);PHPChina 开源社区门户"Q!lUh6Tea
}
p3dOc|*D*@%b`4nt0userloginfo($userdb);
4Jolk.h%H!Ah/N4I(f0
k.q$P9s^:v4C0PHPChina 开源社区门户-hf Sd@
要高效PHPChina 开源社区门户f#^%fmG!mZ i-z
2,(这个代码用于得到程序目录对应的网址,推荐使用)PHPChina 开源社区门户2rT!S2yB4lM'x
$urlarray=explode('/',$HTTP_SERVER_VARS['REQUEST_URI']);
;]5MW.C@B_Eg*wi0$urlcount=count($urlarray);unset($urlarray[$urlcount-1]);
!DV"u*T$nmr$`0$ofstarurl='http://'.$HTTP_SERVER_VARS['HTTP_HOST'].implode('/',$urlarray);PHPChina 开源社区门户~\[nN:z/\
Y!ZH{0R/U}Fw0这段代码比
WY'TP'eX7YKH0$pre_urlarray=explode('/',$HTTP_SERVER_VARS['HTTP_REFERER']);PHPChina 开源社区门户zESi_5r7TvE
$pre_url=array_pop($pre_urlarray);
rqNK0G&?M |/|0要高效
*BgwlXh HRO03,在循环中判断时,数值判断使用恒等要比等于高效
A*` Ta,Y2z:_to1Z0$a=2;$b=2;PHPChina 开源社区门户[5f6X"N2B9e
比如PHPChina 开源社区门户#p:SA,i$I4H3sc(V;p
if($a==$b)$c=$a;PHPChina 开源社区门户2J#\5X%NG9wt
比
.j6o Szx0if($a===$b)$c=$a;PHPChina 开源社区门户f8^ L!wI
高效PHPChina 开源社区门户h.w#A V`T \}?
4,mysql 查询时尽量使用where in 少用 limitPHPChina 开源社区门户)[?eI1ox'b
limit查多记录的前几条, 速度很快, 但是查询最面几条就会慢
9]-G+Gsm ][IZ!l x0使用in .在查询连续性记录,非常快, 非连续性记录第一次运行会稍微慢一点,但是之后将比较快!
U.C8Tb0d/fBQ m$s05,NT服务器数据操作稳定性不及unix/linux
w-`3\Q-J%G0PHPChina 开源社区门户't$z?^]
6,输出前使用尽量使用 ob_start(); 可以加快输出速度,适用NT或nuli/linux,对unlix类服务器 如果使用 ob_start('ob_gzhandler');输出效率将更高
?-j!o'h:x'@ cp0
.G/e'AWE07,判断的时候尽量使用if($a==他的值) 否定的时候尽量使用if(empty($a)),因为这样程序运行更快速PHPChina 开源社区门户#nv|#Z jy@
sv%r3?nQ.Wzd5[08,使用不等时 != 与 <> 效率相当
M!s4TW3ce]&X j0PHPChina 开源社区门户w9\6Z"y!Af!F#Qkr
9,个人经验得 使用 $a="11111111111111"; 的效率和 $a='11111111111111'; 相当.并不象书本说的相差很大
(^njb&GIR }5~u0
\8x*k*T8V}010,使用规范的SQL语句, 会有利于MySQL的解析PHPChina 开源社区门户EFT e%}1K.S
1l2s1L?3IsU,^&qv011,使用
*s:b{1Noj*`0PHPChina 开源社区门户o(B Y qS@
if($online){PHPChina 开源社区门户6N~U:qI @IX
$online1=$online;PHPChina 开源社区门户4hqM4y)Y*j
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);PHPChina 开源社区门户-e8[.~|qG4I
}
A8@OoY\T0PHPChina 开源社区门户.G&cX1c+v
PHPChina 开源社区门户W7X(c8eI5P do
COOKIE将马上生效PHPChina 开源社区门户 FM9Wo*S1h2Hx
使用PHPChina 开源社区门户7`4E Zs5AI4K'J9U
PHPChina 开源社区门户#e|beUb'g-M k
if($online)PHPChina 开源社区门户gBnQ;p1D(B?'U
setcookie('online1',$online,$cookietime,$ckpath,$ckdomain,$secure);
SJI&b6owxC]Wq0PHPChina 开源社区门户KiZ.|*X H
COOKIE需要再刷新一次才能生效PHPChina 开源社区门户(C0`]Z5]!KG
12,使用PHPChina 开源社区门户o!Au8|2?G
$handle=fopen($filename,wb);
cv`a r z VB0flock($handle,LOCK_SH);PHPChina 开源社区门户;DU DU4WU8?
$filedata=fread($handle,filesize($filename));PHPChina 开源社区门户WTCEwrwBy
fclose($handle);PHPChina 开源社区门户KVb+r Mu2]
PHPChina 开源社区门户go*|9aLVV
比PHPChina 开源社区门户G r#AFj;dT5m E
w/h_s-F0}0file($filename);
i ~%W){+r-^O:K e0无论在速度还是稳定上都要优秀
M6S@BD _013,截断字符串优化函数(可避免?字符出现)
r!f9E0G&IC0function substrs($content,$length) {
| J3N"m r0tH0if(strlen($content)>$length){
;V?~{%X0$num=0;PHPChina 开源社区门户+CL q2jQF
for($i=0;$i<$length-3;$i++) {PHPChina 开源社区门户0p R,u6h\5}b:t4hD
if(ord($content[$i])>127)$num++;PHPChina 开源社区门户8zl"T6x ?"m:BG
}PHPChina 开源社区门户3f[Pnz3K
$num%2==1 ? $content=substr($content,0,$length-4)
content=substr($content,0,$length-3);PHPChina 开源社区门户y9][+Bp$content.=' ...';PHPChina 开源社区门户hXAoI!C{
}PHPChina 开源社区门户3|(A PT"L`)E%Vq
return $content;