Laravel Queue worker с cron

Я пытаюсь заставить свой веб-сайт отправлять электронные письма с подтверждением каждый раз, когда кто-то новый регистрируется.

Я сделал это, как после того, как прочитал об этом, но я все еще не уверен, что это лучший способ сделать это.

в моем cron работает каждую минуту и ​​вызывает php artisan schedule:run

в моей консоли / ядре

protected function schedule(Schedule $schedule)
{
    $schedule->command('queue:work --once')->everyMinute()->withoutOverlapping();
}

Я добавил параметр --once, потому что обработчик очереди не существует по завершении, и я не хочу, чтобы много новых процессов выполнялось каждую минуту.

Есть ли способ заставить обработчика очереди завершить все задания и выйти, а затем снова запустить его через одну минуту, чтобы у меня не было много экземпляров, или это только один экземпляр?

Я читал, что могу вернуть null для выхода из рабочего, но если это можно сделать, то как я могу вернуть null только после того, как будет выполнено последнее задание?


person A. Dabak    schedule 29.09.2017    source источник


Ответы (1)


для всех, кто все еще ищет решение, в laravel 5.7 они добавили поддержку для запуска всех заданий в очереди, а затем остановили работника очереди, когда все задания будут выполнены.

Ваш cronjob должен запустить это: php /path/to/laravel/artisan queue:work --stop-when-empty

person A. Dabak    schedule 05.10.2018