Команда queue:work
Команда queue:work запускает обработчик очереди, который извлекает задачи из указанной очереди и выполняет их. По умолчанию процесс работает бесконечно, обрабатывая задачи по мере их поступления. Первым параметром можно указать соединение, вторым - имя очереди. Команда поддерживает множество опций для тонкой настройки поведения обработчика.
Синтаксис
php artisan queue:work {connection?} {--queue=} {--once} {--stop-when-empty} {--delay=} {--memory=} {--timeout=} {--tries=} {--sleep=}
Параметры команды
Команда принимает следующие параметры и опции:
connection - имя соединения с очередью (например, redis, database)
--queue - имена очередей для обработки через запятую
--once - обработать только одну задачу и завершиться
--stop-when-empty - остановить процесс, когда очередь станет пустой
--delay - задержка перед повторной попыткой (в секундах)
--memory - максимальный лимит памяти (в мегабайтах)
--timeout - таймаут выполнения задачи (в секундах)
--tries - максимальное количество попыток выполнения
--sleep - пауза между проверками очереди (в секундах)
Пример 1
Запустим обработчик очереди с настройками по умолчанию:
php artisan queue:work
Результат выполнения кода:
"Processing jobs from the queue..."
Пример 2
Запустим обработчик для конкретной очереди с ограничением по памяти:
php artisan queue:work --queue=high-priority --memory=256
Результат выполнения кода:
"Processing jobs from high-priority queue with memory limit 256MB"
Пример 3
Обработаем одну задачу и завершим работу с максимальным количеством попыток:
php artisan queue:work --once --tries=3
Результат выполнения кода:
"Processing a single job with max 3 attempts"
"Job processed successfully"
Пример 4
Запустим обработчик с остановкой при пустой очереди и таймаутом 60 секунд:
php artisan queue:work --stop-when-empty --timeout=60
Результат выполнения кода:
"Starting queue worker with timeout 60s"
"No jobs found, stopping worker"
Пример 5
Запустим обработчик с несколькими очередями и задержкой перед повторной попыткой:
php artisan queue:work --queue=high-priority,default,low-priority --delay=5
Результат выполнения кода:
"Processing jobs from queues: high-priority, default, low-priority"
"Retry delay set to 5 seconds"
Смотрите также
-
команда
queue:listen,
которая запускает обработчик очереди с автоматической перезагрузкой кода -
команда
queue:failed,
которая показывает список проваленных задач из очереди -
команда
queue:retry,
которая повторно отправляет проваленные задачи в очередь -
команда
make:job,
которая создаёт новый класс задания для очереди