Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як перезапускати воркери черг і інші довгоживучі процеси після деплою?

Воркер черги, Horizon, Octane, Reverb, schedule:work завантажують код один раз і тримають його в пам'яті. Після деплою вони продовжують виконувати старий код, доки їх не перезапустити.

Команда в Laravel 13:

php artisan reload

Вона завершує ці процеси, а підняти їх знову має монітор процесів: Supervisor, systemd чи оркестратор. Без монітора процеси просто зупиняться.

Окремі команди для конкретних сервісів:

  • php artisan queue:restart - воркери завершать поточне завдання й вийдуть;
  • php artisan horizon:terminate - те саме для Horizon;
  • php artisan octane:reload.

Приклад Supervisor:

[program:laravel-worker]
command=php /var/www/app/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
numprocs=2
stopwaitsecs=3600

stopwaitsecs має бути більшим за найдовше завдання, інакше Supervisor уб'є воркер посеред роботи.

Порядок деплою: новий код і optimize → міграції → reload. Воркер, що стартує зі старою схемою й новим кодом (чи навпаки), - типове джерело помилок одразу після релізу.

Докладніше в документації: Перезавантаження сервісів

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання