Ответ
Супервизор — это системный демон, который запускает, отслеживает и контролирует другие процессы (рабочие процессы, воркеры). Его основная задача — гарантировать, что критически важный процесс будет автоматически перезапущен в случае его падения или завершения. В PHP-проектах супервизор часто используется для управления фоновыми воркерами очередей (например, для Laravel Queues или Symfony Messenger).
Практический пример с Supervisor (пакет для Linux):
- Установка:
sudo apt-get install supervisor - Конфигурация воркера. Создаем файл
/etc/supervisor/conf.d/laravel-worker.conf:[program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/html/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600 directory=/var/www/html autostart=true autorestart=true stopasgroup=true killasgroup=true user=www-data numprocs=8 redirect_stderr=true stdout_logfile=/var/log/supervisor/laravel-worker.log stopwaitsecs=3600numprocs=8— запускает 8 процессов воркера для параллельной обработки.autorestart=true— гарантирует автоматический перезапуск при завершении.
-
Управление:
# Перечитать конфигурацию и применить изменения sudo supervisorctl reread sudo supervisorctl update # Запустить все процессы sudo supervisorctl start all # Проверить статус sudo supervisorctl status
Альтернативы в PHP-мире: Для управления долгоживущими PHP-процессами также используются менеджеры процессов, встроенные в сами приложения, например, RoadRunner или Swoole, которые могут работать без внешнего супервизора, но часто сами требуют надзора со стороны systemd или Supervisor.