Я хотел написать длинный ответ с объяснением.
1 - Crontab - менеджер по расписанию.Он вызывает вашу команду каждый раз, когда запускается планировщик.
Например: если вы создадите запись в crontab, чтобы написать hello world раз в минуту, она будет делать это каждую минуту, и до вечности.
2 - Работник очереди слушает очередь, и она работает, если есть какая-либо работа, ожидающая выполнения.Очень похоже на задания cron, но время выполнения не предопределено.Убедитесь сами:
/**
* Listen to the given queue in a loop.
*
* @param string $connectionName
* @param string $queue
* @param \Illuminate\Queue\WorkerOptions $options
* @return void
*/
public function daemon($connectionName, $queue, WorkerOptions $options)
{
// [...]
while (true) {
...
}
}
Как вы видите, она продолжает, пока что-то из внешнего мира не остановит ее.
4- Ваш планировщик будет создавать еще одного работника, подобного этому каждую минуту.
Используйте что-то вроде supervisor
, чтобы наблюдать за своими работниками.И вдумчиво создавайте свои рабочие экземпляры.См. конфигурация супервизора часть документации по laravel.
Если вы настаиваете на совместном использовании cron
и queue workers
, используйте queue:work --once
, чтобы сообщить вашему работнику, когда нужно остановиться:)