我正在使用以下网址请求网络服务:
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ConnectException;
try {
$client = new Client();
$response = $client->request('GET', $url); //it crashes at this line
$content = json_decode($response->getBody(), true);
}
catch (ConnectException $e) {
\Drupal::logger('amu_hal')->error('incorrect_url'.$url);
}
今天远程服务器返回错误500.
如何修改我的代码,以免在网站崩溃时崩溃?
答案 0 :(得分:1)
我认为远程服务器是指需要很长时间才能连接的服务器。您可以为请求指定超时。
或许服务器返回错误500并且在ConnectException
期间失败了?您可以检查请求返回的状态代码。
或者甚至代码可能会使您指示的行失败,但异常Exception
未被捕获?尝试使用$client = Drupal::httpClient();
$request = $client->get($uri, ['connect_timeout' => 5]);
if ($request->getStatusCode() === 200) {
echo 'Connection Success';
} else {
echo sprintf('Error %d occurred', $request->getStatusCode());
}
作为一个全能来调试这种情况。
我建议您不要直接使用Guzzle,而是使用Drupal包装(在引擎盖下使用Guzzle)。
this.addShipTest1 = function() {
this.revolutionTime += 0.5;
this.stopAllShipCSS();
this.addShip()
}
this.addShipTest2 = function() {
this.revolutionTime += 0.5;
this.stopAllShipCSS();
var save = this;
setTimeout(function() {
save.addShip();
}, 100);
}