异常后继续进行Laravel工作

时间:2019-05-07 17:25:28

标签: php laravel try-catch

我有一个Laravel Job正在派遣。作业将获取一些记录以进行处理,然后对每个记录调用一个API。 API偶尔可能会引发错误,例如HTTP500等。此库(鹅)使用Guzzle。

我想捕获错误,标记记录以供稍后重试,然后继续循环中的其余记录。

我的代码如下,但是当发生错误时,foreach循环会停止并且作业不会继续。

我的猜测是Laravel中的Job Handler引发了致命错误,并且该作业被更高级别地暂停。

public function extractArticles() {

    $articles = $this->fetchArticlesToExtract();

    $goose = new GooseClient();

    foreach($articles as $article) {

        try {

            //Get the Article Data - Errors can happen here

            $articleData = $goose->extractContent($article->source_url);

            //Do Some Processing

            $article->save();

        }  

    catch (\Goose\Exception $e) {

        //Set a flag to come back later

        //Try continue with next record
        continue;
    }

}       
    return;
}

我如何告诉工作继续?这里只会发生一小部分错误,我已经编写了“重试”的逻辑,所以我很高兴没有完全停止工作。

1 个答案:

答案 0 :(得分:0)

}太多,而且位置错误

public function extractArticles() {

    $articles = $this->fetchArticlesToExtract();

    $goose = new GooseClient();

    foreach($articles as $article) {

        try {

            //Get the Article Data - Errors can happen here

            $articleData = $goose->extractContent($article->source_url);

            //Do Some Processing

            $article->save();

        }  

    //} removed

        catch (\Goose\Exception $e) {
            //Set a flag to come back later

            //Try continue with next record
            continue;
        }
    } 
    return;
}