【问题标题】:PHP REST Service is really slowPHP REST 服务真的很慢
【发布时间】:2017-07-24 13:26:39
【问题描述】:

我的 PHP REST 服务有问题,它真的很慢。 我使用 Flight PHP 框架构建它。它正在访问 MySQL 数据库中的数据并将它们作为 json 返回。

Flight 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;
});

第一个响应非常快,并且返回的答案未格式化。

大约 3 秒后,请求完成并正确显示答案。

为什么完成请求需要这么长时间?

提前致谢!

【问题讨论】:

  • 如果你的请求不需要数据库怎么办?例如。返回一个硬编码的字符串,比如 hello world?这样您就可以确定数据库数据检索是否是瓶颈。
  • 只是一个长镜头,但如果你做 $db->query 而不是 prepare-execute,有什么改变吗?
  • 您是否尝试过重新启动服务器。还要检查 Chrome 开发设置中的限制
  • @peter:我无法重新启动服务器,因为它来自虚拟主机
  • @Mihai: 没有改变任何东西,仍然需要 3 秒才能完成请求

标签: php json rest flightphp


【解决方案1】:

最后我在方法结束时通过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-80 毫秒。

【讨论】:

    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 2020-07-23
    • 2017-11-10
    • 2010-12-28
    • 2013-01-25
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    相关资源
    最近更新 更多