2017-03-04 24 views
0

我遇到了我的PHP REST服務問題,它非常慢。 我使用Flight PHP Framework構建它。它從MySQL數據庫訪問數據並將它們返回爲json。PHP REST服務真的很慢

飛行REST服務:

Flight::route('GET /categories', function(){ 
    header('Content-type: application/json'); 
    $db = Flight::db(); 
    $sql = "SELECT * FROM categories"; 
    $stmt = $db->prepare($sql); 
    $stmt->execute(); 
    $result = $stmt->fetchAll(); 
    echo json_encode($result); 
    $db = null; 
}); 

的第一個反應是非常快的,答案返回未格式化。 enter image description here

約3秒後,請求結束,答案顯示正確。 enter image description here

爲什麼要花這麼長時間才能完成請求?

在此先感謝!

+0

如果你做了一個不需要數據庫的請求,該怎麼辦?例如。返回一個硬編碼的字符串,如hello world?這樣您就可以確定數據庫數據檢索是否是瓶頸。 – ThomasMX

+0

只是一個長鏡頭,但如果你做$ db-> query而不是prepare-execute,有什麼改變? – Mihai

+0

您是否嘗試過重新啓動服務器?也檢查在Chrome開發設置節流 – peter

回答

0

最後,我固定在方法結束時與exit();呼叫行爲:

Flight::route('GET /categories', function(){ 
    header('Content-type: application/json'); 
    $db = Flight::db(); 
    $sql = "SELECT * FROM categories"; 
    $stmt = $db->prepare($sql); 
    $stmt->execute(); 
    $result = $stmt->fetchAll(); 
    echo json_encode($result); 
    $db = null; 
    exit(); 
}); 

它需要50-80ms之間現在完成該請求。