Laravel 8 避免任务重复

2021-07-19 11:07 更新

默认情况下,即使之前的任务实例还在执行,调度内的任务也会执行。为避免这种情况的发生,你可以使用 withoutOverlapping 方法:

$schedule->command('emails:send')->withoutOverlapping(); 

在此例中,若 emails:send Artisan 命令 还未运行,那它将会每分钟执行一次。当你的任务执行时间非常不确定,导致你无法准确预测任务的执行时间,那 withoutOverlapping 方法会特别有用。

如有需要,你可以在「without overlapping」锁过期之前,指定它的过期时间。默认情况下,这个锁会在 24 小时后过期。

$schedule->command('emails:send')->withoutOverlapping(10); 


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号