Этот драйвер для хранения очереди заданий использует Redis.
В приложении должно быть установлено расширение yiisoft/yii2-redis
.
Пример настройки:
return [
'bootstrap' => [
'queue', // Компонент регистрирует свои консольные команды
],
'components' => [
'redis' => [
'class' => \yii\redis\Connection::class,
// ...
],
'queue' => [
'class' => \yii\queue\redis\Queue::class,
'redis' => 'redis', // Компонент подключения к Redis или его конфиг
'channel' => 'queue', // Ключ канала очереди
],
],
];
Для обработки очереди используются консольные команды.
yii queue/listen [timeout]
Команда listen
запускает обработку очереди в режиме демона. Очередь опрашивается непрерывно.
Если добавляются новые задания, то они сразу же извлекаются и выполняются. timeout
- время
ожидания задания из очереди перед следующей итерацией. Способ наиболее эфективен если запускать
команду через supervisor или systemd.
yii queue/run
Команда run
в цикле извлекает задания из очереди и выполняет их, пока очередь не опустеет, и
завершает свою работу. Это способ подойдет для обработки очереди заданий через
cron.
Для команд run
и listen
доступны следующие опции:
--verbose
, -v
: состояние обработки заданий выводится в консоль.--isolate
: каждое задание выполняется в отдельном дочернем процессе.--color
: подсветка вывода в режиме --verbose
.yii queue/info
Команда info
выводит информацию о состоянии очереди.
yii queue/clear
Команда clear
делает полную очистку очереди.
yii queue/remove [id]
Команда remove
удаляет задание из очереди.