laravel队列配置任务最大重试次数,单任务最大执行时间
laravel队列配置任务最大重试次数,单任务最大执行时间
一、总结
一句话总结:
在使用laravel队列的时候,假如没有任何配置,那么【队列将会一直执行,直至成功为止】,但是这不是我们想要的,这样会【导致错误日志无限增长】,然后爆炸
class SendEmailCode implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * 任务最大尝试次数。 * * @var int */ public $tries = 3; /** * 任务运行的超时时间。 * * @var int */ public $timeout = 180; //...
二、laravel队列配置任务最大重试次数,单任务最大执行时间
转自:https://www.yxccan.cn/blog/detail/41
在使用laravel队列的时候,假如没有任何配置,那么队列将会一直执行,直至成功为止,但是这不是我们想要的,这样会导致错误日志无限增长,然后爆炸
配置队列任务最大重试次数,或者单任务最大执行时间,有两种方法
方法一:artisan命令,增加—tries或者 —timeout
方法二:在Job控制器,任务类中加入变量定义
方法一
php artisan queue:listen --tries=3 //失败任务尝试3次 php artisan queue:listen --timeout=60 //每个任务运行最大时间不超过60秒
这种命令的形式,我们维护在Supervisor中,但是要是命令忘记加tries或者timeout,还是会导致出错
所以我比较推荐下面方法,嘻嘻
方法二
在任务类中直接配置
class SendEmailCode implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * 任务最大尝试次数。 * * @var int */ public $tries = 3; /** * 任务运行的超时时间。 * * @var int */ public $timeout = 180; //...
PS:优先级
当在类配置了,那么 artisan命令的配置将无效,即任务类配置优先