Superviseur : un système de contrôle de processus robuste pour les applications PHP
Supervisor est un outil puissant pour gérer les processus en arrière-plan, une nécessité pour les développeurs PHP gérant des tâches de longue durée, des files d'attente et d'autres tâches en arrière-plan. Ce guide détaille la configuration du superviseur, l'intégration des applications PHP et la configuration complète pour des performances optimales.
Le superviseur excelle dans la gestion des tâches en arrière-plan :
C'est particulièrement avantageux pour les projets PHP employant :
Ubuntu/Debian :
sudo apt update sudo apt install supervisor
CentOS/RedHat :
sudo yum install epel-release sudo yum install supervisor
Post-installation, activez et activez le superviseur :
sudo systemctl start supervisord sudo systemctl enable supervisord
Supervisor utilise des fichiers de configuration (généralement situés dans /etc/supervisor/conf.d/
) pour gérer des programmes individuels.
Exemple de configuration de base :
Créez /etc/supervisor/conf.d/my_php_worker.conf
avec ce contenu :
[program:my_php_worker] command=php /path/to/worker.php autostart=true autorestart=true stderr_logfile=/var/log/my_php_worker.err.log stdout_logfile=/var/log/my_php_worker.out.log
L'option --tries=3
(au sein de la directive command
) limite les tentatives de redémarrage à trois avant l'échec.
Appliquer la configuration :
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start my_php_worker:*
Voici une présentation détaillée des options de configuration du superviseur :
command
: La commande à exécuter. Exemple : command=php /path/to/worker.php
autostart
: Démarre automatiquement le programme avec Superviseur. Valeurs : true
(par défaut), false
. Exemple : autostart=true
autorestart
: Redémarrage automatique en cas d'échec. Valeurs : true
, false
, unexpected
. Exemple : autorestart=unexpected
startsecs
: Durée d'exécution minimale (secondes) avant qu'un processus soit considéré comme démarré. Par défaut : 1. Exemple : startsecs=5
startretries
: Nombre maximal de tentatives de redémarrage avant échec. Par défaut : 3. Exemple : startretries=5
exitcodes
: Codes de sortie acceptables empêchant les redémarrages. Par défaut : 0,2. Exemple : exitcodes=0,1
stopwaitsecs
: Temps (en secondes) d'attente pour un arrêt progressif avant une interruption forcée. Par défaut : 10. Exemple : stopwaitsecs=20
redirect_stderr
: Rediriger l'erreur standard vers la sortie standard. Valeurs : true
, false
(par défaut). Exemple : redirect_stderr=true
stdout_logfile
/ stderr_logfile
: Chemins d'accès aux fichiers journaux pour la sortie standard et les erreurs. Exemple : stdout_logfile=/var/log/my_program.out.log
stdout_logfile_maxbytes
/ stderr_logfile_maxbytes
: Taille maximale du fichier journal avant rotation. Par défaut : 50 Mo. Exemple : stdout_logfile_maxbytes=10MB
stdout_logfile_backups
/ stderr_logfile_backups
: Nombre de fichiers journaux pivotés à conserver. Par défaut : 10. Exemple : stdout_logfile_backups=3
user
: Utilisateur système sous lequel exécuter le programme. Exemple : user=www-data
environment
: Variables d'environnement. Exemple : environment=APP_ENV="production",DB_HOST="localhost"
priority
: Démarrer l'ordre (les valeurs inférieures commencent en premier). Par défaut : 999. Exemple : priority=100
directory
: Répertoire de travail. Exemple : directory=/path/to/your/app
stopasgroup
: Envoyer un signal d'arrêt au processus et à ses enfants. Valeurs : true
, false
(par défaut). Exemple : stopasgroup=true
killasgroup
: Tuez de force le processus et ses enfants après stopwaitsecs
. Valeurs : true
, false
(par défaut). Exemple : killasgroup=true
Laravel Queues : Gérez la commande queue:work
pour un traitement fiable des tâches.
sudo apt update sudo apt install supervisor
Tâches planifiées : Remplacez cron pour une exécution de script planifiée plus robuste.
sudo yum install epel-release sudo yum install supervisor
Scripts de longue durée : Gérez les scripts persistants tels que les serveurs WebSocket.
sudo systemctl start supervisord sudo systemctl enable supervisord
Assurez-vous que Supervisor démarre au démarrage du système :
Activer le service Superviseur : sudo systemctl enable supervisord
Démarrez le service (si nécessaire) : sudo systemctl start supervisord
stdout_logfile_maxbytes
et stdout_logfile_backups
.environment
pour gérer les variables.Supervisor est un outil essentiel pour les développeurs PHP gérant les processus en arrière-plan. Ce guide fournit une introduction complète à son installation, sa configuration et ses applications pratiques, garantissant une gestion des tâches fiable et efficace pour vos projets PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!