планировщик laravel без перекрытия при использовании очередей (база данных) - PullRequest
0 голосов
/ 04 декабря 2018

Я всегда использовал драйвер очереди синхронизации и имел несколько длительных заданий в моем планировщике (до часа):

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

В режиме синхронизации без наложения работало нормально, но теперь я изменилсядрайвер к QUEUE_DRIVER=database, и задание записывается в таблицу заданий БД каждую минуту, даже если старое задание все еще выполняется.

Как мне справиться с этим делом?

1 Ответ

0 голосов
/ 04 декабря 2018

Альтернативный способ

Создайте командный файл https://laravel.com/docs/5.7/artisan#generating-commands

Затем включите класс команды в app \ Console \ Kernel.php

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

в вашем командном файлеinside handle ()

   /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {

        dispatch(new ProcessFileUploads());

    }

Это хороший способ работы с заданиями и планировщиками

Вы можете использовать https://laravel.com/docs/5.7/queues#job-events для отслеживания своей работы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...