我正在构建基于Slim框架3.8.1的简单API。我遇到了一个问题,即响应需要大约10秒钟才能呈现。我通过消除过程验证了它是实际呈现的响应时间大约需要10秒---它不是数据库查询,应用程序引导程序等。当返回JSON时Slim Framework的响应速度非常慢
我记录了我从中获得的数据端点,它会立即检索并呈现它。该路线实际上甚至在浏览器中立即呈现JSON输出,但随后继续旋转约10,000ms。
不知道这里发生了什么,尤其是因为它是一个非常小的数据集。验证这是发生在各种浏览器中,并在邮件员等REST客户端进行测试。
我验证了这个中间件早就已经执行了,当这个等待发生的时候,看起来并不是这样。
这是我正在做的最小版本。
<?php
$api = new Slim();
$api->any('/{plant}/{noun}', function ($request, $response, $args) {
return $response->withStatus($status)->withJson(
$my_json
);
}
如果我使用->write()
而只是发送一个简短的文本字符串,而不是它很好。如果我将JSON传递给->write()
,它会挂起相同的时间约10秒钟。
奇怪的是,虽然如果我做一些简单的像return $response->withStatus(404)->withJson(['foo'=>'bar']);
它立即返回响应,需要提醒的是响应正文被截断,只显示{"
,而不是完整{"foo":"bar"}
响应我很期待。
这里的JSON身体我传递成功,但呈现了到10秒:
{
"data": {
"id": "14",
"user_id": "1",
"name": "foozzz",
"description": "1q234567u12349",
"sku": "",
"price": "123.00",
"shipping": {
"r1-1": "123.00",
"r1-1+": "123.00",
"r2-1": "123.00",
"r2-1+": "123.00"
},
"flexible_price": "1",
"digital_fulfillment": "1",
"physical_fulfillment": "1",
"physical_weight": "0",
"physical_width": "0",
"physical_height": "0",
"physical_depth": "0",
"available_units": "-1",
"variable_pricing": "0",
"fulfillment_asset": "9",
"descriptive_asset": "64",
"creation_date": "1499186300",
"modification_date": "1499707715",
"variants": {
"attributes": [],
"quantities": [
{
"id": "13",
"key": "\"{\\\"123\\\":\\\"PURPLE\\\",\\\"2442\\\":\\\"djdoos\\\"}\"",
"formatted_name": "",
"value": "13"
},
{
"id": "14",
"key": "\"{\\\"123\\\":\\\"PURPLE\\\",\\\"2442\\\":\\\"dskmkdjjd\\\"}\"",
"formatted_name": "",
"value": "10"
},
{
"id": "15",
"key": "\"{\\\"123\\\":\\\"dappsajd\\\",\\\"2442\\\":\\\"djdoos\\\"}\"",
"formatted_name": "",
"value": "123"
},
{
"id": "16",
"key": "\"{\\\"123\\\":\\\"dappsajd\\\",\\\"2442\\\":\\\"dskmkdjjd\\\"}\"",
"formatted_name": "",
"value": "81"
}
]
}
},
"status": 200,
"status_uid": "commerce_item_200"
}
本来我想这是因为响应的大小的很慢,但是这也需要到10秒完成加载(再次它呈现瞬间,然后旋转的持续时间:
{
"status": 404,
"status_uid": "general_404",
"status_message": "Route not found, or server error",
"error_name": "There was an error while getting a response",
"error_message": "The request failed."
}
在Apache/2.2.15像这样没有其他问题上的PHP 30年5月6日运行此的任何想法这可能是为什么发生?
只是回顾一下:加载需要10秒钟,但验证它不是数据库或中间件。如果我拿出返回$回应,页面马上加载。
有什么想法?谢谢!