2013-06-22 69 views
0

我有一個PHP頁面加載並從一個mysql查詢命令約130結果到HTML表格。 PHPmyadmin在0.003秒內完成此操作,但我的頁面需要0.5秒。在某處PHP代碼很慢,但我吮吸調試它。PHP放緩,但其中

有一件事我沒有加快的表現,我發現像

if($var == '123'){ //action } 

同時是$ var不存在。通過將其更改爲

if(isset($var)){ 
    if($var =='123'){ 
    //action 
    } 
} 

當$ var不在附近時,腳本變得快得多。

我的問題:找出腳本放緩的最佳方法是什麼?有更多這樣的事情嗎?

+2

http://stackoverflow.com/questions/1200214/how-can-i-measure-the-speed-of-code-written-in-php這可能會幫助你找到你的慢代碼 –

+1

它可能會更快但它沒有做同樣的事情。 '='和'=='不是一回事。 – John

+0

'if($ var ='123')'不是支票,它的值分配 –

回答

0

這是不應該做出太大的差別來表現,除非有somethng有關您的代碼/配置你還沒有告訴我們很奇怪。嘗試通過分析器運行你的代碼。 (我使用xdebug + kcachegrind - 但你沒有說你使用的是什麼操作系統)。

你如何獲得你的頁面加載時間? PMA通常不會顯示完整的結果集。 0.003秒似乎有點樂觀。不確定我相信你的分析。但當然0.5秒很慢。

0

您可以使用&&(和)logical operator代替嵌套if:

if(!empty($var)&&($var=='123')){ 
    //action 
} 

如果您與loose comparisons==檢查,而不是一個嵌套if多個值,你可以使用一個switch()

if(!empty($var)){ 
    switch ($var){ 

    case "456": 
    //do something  
    break; 

    case "123": 
    //do something 
    break; 

    default: 
    //give them an error or something 

    } 
} 
1

如何返回結果?在循環內可能會導致一些性能問題,這是一個非常昂貴的指令。如果你這樣做,你的實現改變這樣的事情:

$resultOutput = ''; 

foreach($result as $var) 
{ 
    // to seize AbsoluteZERO's idea 
    switch ($var) 
    { 
     case "456": 
     //do something 
     $resultOutput .= '\n456 found'; 
     break; 

     case "123": 
     //do something 
     $resultOutput .= '\n123 found'; 
     break; 

     default: 
     //give them an error or something 
    } 
} 

echo $resultOutput;