在Laravel的工匠队列中捕获ProcessTimedOutException:listen

cee*_*yoz 21 php amazon-sqs laravel laravel-4

我们有一堆SQS工作,我们使用Laravel来监视和处理php artisan queue:listen.

定期,有几分钟的短暂和SQS超时.发生这种情况时,请queue:listen使用以下消息中止:

[Symfony\Component\Process\Exception\ProcessTimedOutException]                                                                                             
  The process "php artisan queue:work
    --queue="https://sqs.us-west-2.amazonaws.com/*******/queue"
    --delay=0 --memory=128 --sleep=3 --tries=0 -env=production"
  exceeded the timeout of 60 seconds.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过处理异常app/start/global.php,或者app/start/artisan.php:

App::error(function(Symfony\Component\Process\Exception\ProcessTimedOutException $exception) {
    // do nothing
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,异常仍然发生,我queue:listen仍然死了.

如何捕获此异常并忽略它以进行重试?

Dmi*_*sov 0

您可以在异常处理程序中重新运行“php artisan queue:work ...”队列作业,

或将 /vendor/symfony/process/Symfony/Component/Process/Process::setTimeout() 值增加到更高的值。

或者也许两者兼而有之。