laravel调度程序在使用队列(数据库)时没有重叠



我一直使用同步队列驱动程序,并且在我的调度程序中有一些长时间运行的作业(长达一个小时(:

$schedule->job(new ProcessFileUploads())->everyMinute()->withoutOverlapping(60);

withoutOverlapping在同步模式下工作得很好,但现在我已经将驱动程序更改为QUEUE_DRIVER=database,并且每分钟都会将作业写入DB作业表,即使旧作业可能仍在运行。

我该如何处理这个案子?

备用

创建命令文件https://laravel.com/docs/5.7/artisan#generating-命令

然后在app\Console\Cernel.php 中包含命令类

$schedule->command('Process:FileUploads')->withoutOverlapping(60);

在handle((内的命令文件中

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
dispatch(new ProcessFileUploads());
}

这是一个很好的工作方式&日程安排

你可以利用https://laravel.com/docs/5.7/queues#job-用于跟踪您的工作活动的事件

最新更新