在我的项目中,我需要在数据库中进行批量导入和数据插入。
因此,我需要知道API请求失败时。这里的问题是PHP无法捕获该异常,因为Laravel 5.6会在出现任何错误时停止执行。
我需要停止laravel自动停止执行并让php决定如果API请求失败,那么让我们等待5秒再试一次。
为了达到这个目的,我在laravel控制器内部创建了一个功能。
private function fetchAPI($id) {
try {
$rawResult = file_get_contents('http://example.com/'.$id.'?key=5453');
} catch (Exception $e) {
sleep(5);
$this->fetchAPI($id);
}
return json_decode($rawResult, true);
}
上述方法将使用try ... catch块。但是我也用布尔检查实现了没有运气:
private function fetchAPI($id) {
$rawResult = file_get_contents('http://example.com/'.$id.'?key=5453');
if($rawResult === FALSE) {
sleep(5);
$this->fetchAPI($id);
} else {
return json_decode($rawResult, true);
}
}
在这种情况下,如果API请求从Laravel控制器方法失败,我将如何重新尝试?
答案 0 :(得分:3)
使用\Exception
不是Exception
,因为Exception
被视为YourCurrentFileNamespace\Exception
。