Как вручную отловить исключение ошибки в Laravel - PullRequest
0 голосов
/ 12 мая 2018

В моем проекте мне нужно выполнить массовый импорт и вставку данных в базу данных.

Итак, мне нужно было знать, что при сбое запроса 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);
}

Приведенный выше метод будет использовать попытку ...поймать блок.Но я также реализовал с булевой проверкой, не повезло:

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?

1 Ответ

0 голосов
/ 12 мая 2018

Используйте \Exception, а не Exception, потому что Exception считается YourCurrentFileNamespace\Exception.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...