我已经编写了一个简单的api,它允许我以有组织的方式从数据库中获取数据。www.example.com/api/get/all 将数据库中一个表中的所有数据作为一个数组提供给我,将其编码为json,然后对其进行响应。这个文件每天都被称为cron作业,并将其(和其他一些数据)转储到网站前端使用的.js文件中。
奇怪的是,如果我去www.example.com/api/get/all 它运行大约2-3分钟(表中有很多数据),然后不向屏幕输出任何内容。但是,如果在函数循环遍历所有数据之前向其添加echo,则会将json编码的数据字符串输出到屏幕。以前有人见过这个吗?是虫子吗?有解决办法吗?
似乎很奇怪,只有在出现回声/打印后才会回声。
以下是我的api的相关部分:
// ENDPOINT people:
private function candidates()
{
$response = new stdClass();
// Fetch all users:
if( $this->verb == 'all' )
{
// Get everyone from the DB:
$sql = $this->_db->query( 'SELECT id FROM ff_candidates' );
if( $sql )
{
$candidates = array();
while( $obj = $sql->fetchObject() )
{
// var_dump($obj);
$candidate = new Candidate( $this->_db, $obj->id );
$person = new stdClass();
// Start the response:
$person->id = $candidate->get_id();
$person->name = utf8_encode($candidate->get_name());
$person->gender = $candidate->get_gender();
$candidates[] = $person;
}
$this->_response( $candidates );
}
else
{
$response->success = false;
$response->message = 'There was a problem fetching the candidate. Please try again.';
$this->_response( $response, 500 );
}
}
}
// Send a response to the server:
private function _response( $response, $status = 200 )
{
$verbose = $this->_requestStatus( $status );
header("Content-Type: application/json");
header( 'HTTP/1.1 '.$status.' '.$verbose );
if( is_string($response) )
{
$data = new stdClass();
$data->message = $response;
$data->status = $status;
$data->title = $verbose;
}
else
{
$data = $response;
}
$json = json_encode( $data );
echo $json;
exit();
}
编辑:
_requeststatus()代码:
private function _requestStatus( $code )
{
$status = array(
200 => 'OK',
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
429 => 'Too Many Requests',
500 => 'Internal Server Error',
503 => 'Service Unavailable',
);
return ( $status[$code] ) ? $status[$code] : $status[500];
}
暂无答案!
目前还没有任何答案,快来回答吧!