【发布时间】:2015-10-26 10:23:25
【问题描述】:
我的服务器正在运行 Apache、FPM/FastCGI 和 PHP 5.5.30。
我有 Laravel 5.0 框架和 Guzzle 来管理不同类型的 HTTP 请求。
在 Guzzle 之前,我使用 Rolling-Curl 并行发出请求。我将 Rolling-Curl 更改为 Guzzle 的原因是我随机出现 504 网关错误,但经过几次测试后,我注意到即使使用 Guzzle 也能得到它。
网关错误总是在 40 秒后发生,而且是随机发生的。如果我按几次 F5(刷新)它就会消失,但以后可能会再次发生。
以下是我的代码 sn-p
$feeds = Feeds::where('active', '=', '1')->lists('url');
$client = new \GuzzleHttp\Client();
$requests = array();
foreach($feeds AS $feed)
{
$requests[] = $client->createRequest('GET', $feed);
}
$pool = new Pool($client, $requests, [
'pool_size' => '5',
'timeout' => '120',
'connect_timeout' => '120',
'complete' => function (CompleteEvent $event) {
echo 'Completed request to ' . $event->getRequest()->getUrl() . " - ". $event->getResponse()->getStatusCode() . "\n";
//echo 'Response: ' . $event->getResponse()->getBody() . "\n\n";
},
'error' => function (ErrorEvent $event) {
echo 'Request failed: ' . $event->getRequest()->getUrl() . "\n";
echo $event->getException();
}
]);
$pool->wait();
echo "...done in " . (microtime(true) - $start);
?>
$feeds 正在从数据库中获取 100 个 RSS URL,我的池一次获取最多 5 个提要的内容。
【问题讨论】:
标签: php laravel timeout guzzle gateway