2017-03-04 146 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之间现在完成该请求。