Вы можете запускать команды ремесленников из своего кода, используя метод call()
на фасаде Artisan.Например, он обработает все готовые задания из очереди по умолчанию и завершит работу, когда это будет сделано:
Artisan::call('queue:work', ['--stop-when-empty' => true])
Из документов :
Иногда вы можете выполнить команду Artisan за пределами CLI.Например, вы можете запустить команду Artisan с маршрута или контроллера.Для этого вы можете использовать метод call
на фасаде Artisan.Метод call
принимает либо имя команды, либо класс в качестве первого аргумента, а массив параметров команды - в качестве второго аргумента.Будет возвращен код выхода:
Route::get('/foo', function () {
$exitCode = Artisan::call('email:send', [
'user' => 1, '--queue' => 'default'
]);
// });
Тот же синтаксис будет работать для планирование :
$schedule->command('queue:work', [...])->everyFiveMinutes();
Как и другиеуказали, что выполнение работника внутри schedule:run
может привести к нежелательному поведению, такому как пропущенные запланированные задачи.
Если у вас есть вопросы о том, как работает диспетчеризация и запуск заданий в очереди, это местодля начала: https://laravel.com/docs/5.7/queues