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 :
<code class="language-bash">sudo apt update sudo apt install supervisor</code>
CentOS/RedHat :
<code class="language-bash">sudo yum install epel-release sudo yum install supervisor</code>
Post-installation, activez et activez le superviseur :
<code class="language-bash">sudo systemctl start supervisord sudo systemctl enable supervisord</code>
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 :
<code class="language-ini">[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</code>
L'option --tries=3
(au sein de la directive command
) limite les tentatives de redémarrage à trois avant l'échec.
Appliquer la configuration :
<code class="language-bash">sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start my_php_worker:*</code>
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.
<code class="language-bash">sudo apt update sudo apt install supervisor</code>
Tâches planifiées : Remplacez cron pour une exécution de script planifiée plus robuste.
<code class="language-bash">sudo yum install epel-release sudo yum install supervisor</code>
Scripts de longue durée : Gérez les scripts persistants tels que les serveurs WebSocket.
<code class="language-bash">sudo systemctl start supervisord sudo systemctl enable supervisord</code>
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!