Очередь Laravel с помощью NodeJS PM2

Очередь Laravel с помощью NodeJS PM2

PM2 - это программа мониторинга процессов, написанная на NodeJs. Я часто использую её как альтернативу официальной программе мониторинга процессов Laravel - supervisor. Однако, в отличие от супервизора, это ПО мониторинга процессов имеет меньше зависимостей, меньше конфигураций и проще. В общем, его я ставлю, когда не получается по каким-либо причинам установить supervisor на сервер.

Установка PM2

Установим PM2 в систему глобально, выполнив:

npm install pm2@latest -g


Отображаем список всех запущенных процессов

Выполните в командной строке команду, чтобы получить список всех процессов, отслеживаемых PM2 (команда прямо как в Docker).

pm2 ls


1_c-julg3T4PmCt-_vAesBcA

Настройка PM2 и создание процессов

Создайте новый YAML файл назвав его process.yml, в который добавьте код, приведенный ниже:

apps:
  - name: "queue_worker"
    script: artisan
    watch: false
    interpreter: php
    args: "queue:work --tries=3 --timeout=5 --sleep=2"
    restart_delay: 3000
    error_file: ./storage/logs/queue.error.log
    out_file: ./storage/logs/queue.out.log
    pid_file: ./storage/app/queue.pid


Чтобы узнать подробнее о PM2, советую просмотреть официальную документацию.

Добавляем alias быстрого запуска Laravel очереди

Для запуска мониторинга, создадим короткую команду, отредактируем package.json, куда добавим две новые команды:

"queue:start": "npm run queue:remove && pm2 start process.yml",
"queue:remove": "php artisan queue:restart && pm2 delete process.yml"


package.json

Прошу обратить внимание, что перед запуском мониторинга процессов, нам необходимо перезагрузить очередь Laravel. Если этого не сделать, и залить новые файлы на сервер, то без перезагрузки, очередь так и будет ссылаться на старую версию кода. Потому, сначала нужно остановить очередь, дать ей возможность прочитать актуальный код, и запустить заново. Что и делаем команда php artisan queue:restart.

Потому, если вы задаётесь вопросом, что при работе Laravel очереди через PM2, код не обновляется, то вам просто нужно перезагрузить очередь.

Вращаем барабан Запускаем процессы

Теперь, когда мы всё добавили, можем запустить PM2 для работы Laravel очереди.


Читаем логи процессов PM2

Для просмотра логов в PM2 просто выполните команду:


Резюме

В этой статье вы узнали, как можно настроить процессы PM2 для мониторинга Laravel очереди. И как её перезагружать при обновлении кода, чтобы обновить код в очереди. Аналогичным образом, вы можете добавить в мониторинг и процесс Laravel Echo Server-а в PM2, добавив лишь новую запись в конфиг.

Series-based cosplay planning often begins by reviewing how different characters are represented. Planning by series also helps coordinate related characters in a group. When comparing designs from the same work, Demon Slayer cosplay costume ideas鬼滅の刃 コスプレ衣装の選び方) provides the matching reference point. The category can support both individual and coordinated group planning. Series-level planning works best when each character design is reviewed on its own terms. A clear theme makes later costume and wig choices easier to coordinate.