在 Laravel 9 中,队列任务的 最大尝试次数 的验证,如最大尝试次数的默认值是多少?
1、在 Laravel 9 中,队列任务的最大尝试次数的默认值是多少?决定尝试验证一下,在任务类中的实现如下
public $timeout = 10; /** * Execute the job. * * @return void */ public function handle() { sleep(2); Log::info( 'handle', [ date('Y-m-d H:i:s') ] ); sss(); }
2、打印日志如下
[2024-05-11 05:56:47] local.INFO: handle ["2024-05-11 05:56:47"]
3、定义任务类本身的最大尝试次数 为 1,在任务类中的实现如下。最后打印的日志与 未设置 $tries 是一样的结果。得出结论:最大尝试次数默认为 1
public $tries = 1; public $timeout = 10; /** * Execute the job. * * @return void */ public function handle() { sleep(2); Log::info( 'handle', [ date('Y-m-d H:i:s') ] ); sss(); }
[2024-05-11 06:04:02] local.INFO: handle ["2024-05-11 06:04:02"]
4、定义任务类本身的最大尝试次数 为 0,在任务类中的实现如下。最后打印的日志有 40 余 条,说明设置为 0 时,最大尝试次数为无限次。如图1、图2
public $tries = 0; public $timeout = 10; /** * Execute the job. * * @return void */ public function handle() { sleep(2); Log::info( 'handle0', [ date('Y-m-d H:i:s') ] ); sss(); }
5、定义任务类本身的最大尝试次数 为 5,在任务类中的实现如下。最后打印的日志有 5 条,说明设置为 5 时,最大尝试次数为 5 次。前 4 次失败(FAIL 为橙色)后,还会继续尝试,直到第 5 次尝试(FAIL 为红色)后,才真正地失败。如图3、图4
public $tries = 5; public $timeout = 10; /** * Execute the job. * * @return void */ public function handle() { sleep(2); Log::info( 'handle5', [ date('Y-m-d H:i:s') ] ); sss(); }
近期评论