代码之家  ›  专栏  ›  技术社区  ›  Chris

使用队列(数据库)时不重叠的laravel调度程序

  •  0
  • Chris  · 技术社区  · 6 年前

    我一直使用同步队列驱动程序,在我的计划程序中有一些长时间运行的作业(最多一个小时):

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

    QUEUE_DRIVER=database 而且,即使旧作业可能仍在运行,该作业每分钟都会写入DB jobs表。

    1 回复  |  直到 6 年前
        1
  •  1
  •   sadaiMudiNaadhar    6 年前

    备用方式

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

    然后将命令类包含在app\Console\Kernel.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-events 用于跟踪您的工作活动