Управление запуском воркеров

Supervisor

Supervisor — монитор процессов для ОС Linux. Он автоматически перезапустит ваши консольные процессы, если они остановятся. Для установки Supervisor в Ubuntu можно использовать следующую команду:

sudo apt-get install supervisor

Конфиги Supervisor обычно находятся в папке /etc/supervisor/conf.d. Можно создать любое количество конфигов.

Пример конфига:

[program:yii-queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /var/www/my_project/yii queue/listen --verbose=1 --color=0
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/my_project/log/yii-queue-worker.log

Этот пример указывает, что Supervisor должен запустить 4 воркера queue/listen, наблюдать за ними, и автоматически перезапускать их если они будут падать. Весь вывод будет писаться в лог.

Подробнее о настройке и использовании Supervisor читайте в документации.

Запуск воркера в режиме демона командой queue/listen поддерживают драйвера File, Db, Redis, RabbitMQ, Beanstalk, Gearman, AWS SQS. Дополнительные опции смотрите в описании нужных вам драйверов.

Systemd

Systemd - система Linux для инициализации демонов. Чтобы настроить запуск воркеров под управлением systemd, создайте конфиг с именем yii-queue@.service в папке /etc/systemd/system со следующими настройками:

[Unit]
Description=Yii Queue Worker %I
After=network.target
# Ниже указана зависимость от mysql. Это справедливо если вы используте очереди на основе mysql.
# Если ваш проект использует другой брокер очередей, нужно изменить или дополнить эту секцию.   
After=mysql.service
Requires=mysql.service

[Service]
User=www-data
Group=www-data
ExecStart=/usr/bin/php /var/www/my_project/yii queue/listen --verbose
Restart=on-failure

[Install]
WantedBy=multi-user.target

Перезагрузите systemd, чтобы он увидел новый конфиг, с помощью команды:

systemctl daemon-reload

Набор команд для управления воркерами:

# Запустить два воркера
systemctl start yii-queue@1 yii-queue@2

# Получить статус запущенных воркеров
systemctl status "yii-queue@*"

# Остановить один воркер
systemctl stop yii-queue@2

# Остановить все воркеры
systemctl stop "yii-queue@*"

# Добавить воркеры в автозагрузку
systemctl enable yii-queue@1 yii-queue@2

Чтобы ознакомиться со всеми возможностями systemd, и сделать более тонкую настройку, смотрите документацию.

Cron

Запускать воркеры можно с помощью cron. Для этого удобнее всего использовать команду queue/run. Она будет работать, пока в очереди есть задания.

Пример настройки:

* * * * * /usr/bin/php /var/www/my_project/yii queue/run

В этом случае cron будет запускать команду каждую минуту.

Команду queue/run поддерживают драйвера File, Db, Redis, Beanstalk, Gearman, AWS SQS. Дополнительные опции смотрите в описании нужных вам драйверов.