在 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();
}




近期评论