我一直使用同步队列驱动程序,并且在我的调度程序中有一些长时间运行的作业(长达一个小时(:
$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-用于跟踪您的工作活动的事件