問題|最適化
1. 関数で配列を渡す場合、グローバルを使用するよりも return を使用する方が効率的です。たとえば、
function userloginfo($usertemp){
$detail=explode("|",$usertemp);
return $。詳細;
}
$login=userloginfo($userdb);
than
function userloginfo($usertemp){
global $detail;
$detail=explode("|",$usertemp);
}
userloginfo( $userdb);
効率的です
2, (このコードはプログラムディレクトリに対応する URL を取得するために使用されます、推奨)
$urlarray=explode('/',$HTTP_SERVER_VARS['REQUEST_URI']) ;
$urlcount=count ($urlarray);unset($urlarray[$urlcount-1]);
$ofstarurl='http://'.$HTTP_SERVER_VARS['HTTP_HOST'].implode('/',$urlarray );
この段落 このコードは
$pre_urlarray=explode('/',$HTTP_SERVER_VARS['HTTP_REFERER']);
$pre_url=array_pop($pre_urlarray);
3 よりも効率的です。ループ内では数値的な判断に定数を使用します
$a=2;$b=2;
例:
if($a==$b)$c=$a;
than
if ($a===$b)$c= $a;
効率的
4、mysql をクエリするときは、where in を使用し、limitless
limit を使用して、多くのレコードの最初の数レコードをチェックするようにすると、速度が非常に速くなります。高速ですが、最後の数レコードのクエリは遅くなります
で使用します。 クエリの連続性では、記録は最初は少し遅くなりますが、その後は速くなります
! 5. NT サーバーのデータ操作の安定性は、unix/linux ほど安定していません
6. 出力する前に ob_start() を使用してください。ob_start(' を使用すると、出力が高速化されます。 unlix サーバーの場合は、出力効率が高くなります
7. 否定する場合は、if ($a==his value) を使用するようにしてください。プログラムがより高速に実行される方法
8、不等値 != を使用する場合は <> と同等です。個人的な経験では $a='11111111111111'; と同じくらい効率的です。本に書かれているように、それほど違いはありません
10. 標準化された SQL ステートメントの使用は、MySQL の解析に有益です
11.
if($online ){
$online1=$online;
setcookie('online1',$) の使用online,$cookietime,$ckpath,$ckdomain,$secure);
}
COOKIE はすぐに有効になります
if($online )
setcookie('online1',$online,$cookietime,$ckpath を使用します) ,$ckdomain,$secure);
COOKIE を有効にするには再度更新する必要があります
12、
$handle=fopen($filename, wb);
flock($handle,LOCK_SH);
$ を使用してくださいfiledata=fread($handle,filesize($filename));
fclose($handle);
than
file($filename);
どこでも速度と安定性の両方が優れています
13、切り捨て文字列の最適化function (? 文字の出現を回避できます)
function substrs($content,$length) {
if(strlen($content)>$length){
$num=0;
for($i=0; $iif(ord($content[$i])>127)$num++;
}
$num% 2==1 $content=substr($content, 0,$length-4):$content=substr($content,0,$length-3);
$content.=' ...';
}
return $content;
}
たとえば$newarray[1]=substrs($newarray[1],25);
14、プログラム内のケースシールド
for ($asc=65;$asc{ //strto lower( ) この関数は一部のサーバーで文字化けを発生します!
if (strrpos($regname,chr($asc))!==false)
{
$error="ユーザー名が紛らわしいことを避けるため、大文字はユーザー名では禁止されているため、小文字を使用してください";
$reg_check=0;
}
}
15、file(); および fget(); は使用しないでください (安定または遅い)配列関数を使用します
function openfile($filename,$method="rb")
{
$handle=@fopen($filename,$method);
@flock($handle,LOCK_SH);
@$filedata= fread($handle,filesize($filename));
@fclose($handle);
$filedata=str_replace("n","n
$ filedb=explode("
//array_pop($filedb);
$count=count($filedb);
if($filedb[$count-1]==' '){unset( $filedb[$count-1]);}
return $filedb;
}
//この関数にはより多くのコードがありますが、速度と安定性の点で大きな利点があります!