Maison >développement back-end >tutoriel php >Guide du superviseur pour les développeurs PHP

Guide du superviseur pour les développeurs PHP

Patricia Arquette
Patricia Arquetteoriginal
2025-01-20 12:03:121052parcourir

Supervisor Guide for PHP Developers

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.

Comprendre le superviseur

Le superviseur excelle dans la gestion des tâches en arrière-plan :

  • Redémarrage automatique des processus en panne.
  • Journalisation centralisée pour une surveillance plus facile.
  • Contrôle de la ligne de commande et de l'interface Web.

C'est particulièrement avantageux pour les projets PHP employant :

  • Files d'attente Laravel pour le traitement asynchrone.
  • Processus persistants comme les serveurs WebSocket.
  • Tâches planifiées similaires aux tâches cron.

Installation du superviseur

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>

Configuration du superviseur

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>

Options de configuration détaillées

Voici une présentation détaillée des options de configuration du superviseur :

  1. command : La commande à exécuter. Exemple : command=php /path/to/worker.php

  2. autostart : Démarre automatiquement le programme avec Superviseur. Valeurs : true (par défaut), false. Exemple : autostart=true

  3. autorestart : Redémarrage automatique en cas d'échec. Valeurs : true, false, unexpected. Exemple : autorestart=unexpected

  4. 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

  5. startretries : Nombre maximal de tentatives de redémarrage avant échec. Par défaut : 3. Exemple : startretries=5

  6. exitcodes : Codes de sortie acceptables empêchant les redémarrages. Par défaut : 0,2. Exemple : exitcodes=0,1

  7. stopwaitsecs : Temps (en secondes) d'attente pour un arrêt progressif avant une interruption forcée. Par défaut : 10. Exemple : stopwaitsecs=20

  8. redirect_stderr : Rediriger l'erreur standard vers la sortie standard. Valeurs : true, false (par défaut). Exemple : redirect_stderr=true

  9. 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

  10. stdout_logfile_maxbytes / stderr_logfile_maxbytes : Taille maximale du fichier journal avant rotation. Par défaut : 50 Mo. Exemple : stdout_logfile_maxbytes=10MB

  11. stdout_logfile_backups / stderr_logfile_backups : Nombre de fichiers journaux pivotés à conserver. Par défaut : 10. Exemple : stdout_logfile_backups=3

  12. user : Utilisateur système sous lequel exécuter le programme. Exemple : user=www-data

  13. environment : Variables d'environnement. Exemple : environment=APP_ENV="production",DB_HOST="localhost"

  14. priority : Démarrer l'ordre (les valeurs inférieures commencent en premier). Par défaut : 999. Exemple : priority=100

  15. directory : Répertoire de travail. Exemple : directory=/path/to/your/app

  16. stopasgroup : Envoyer un signal d'arrêt au processus et à ses enfants. Valeurs : true, false (par défaut). Exemple : stopasgroup=true

  17. killasgroup : Tuez de force le processus et ses enfants après stopwaitsecs. Valeurs : true, false (par défaut). Exemple : killasgroup=true

Cas d'utilisation spécifiques à PHP

  1. 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>
  2. 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>
  3. 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>

Automatisation du démarrage du superviseur

Assurez-vous que Supervisor démarre au démarrage du système :

  1. Activer le service Superviseur : sudo systemctl enable supervisord

  2. Démarrez le service (si nécessaire) : sudo systemctl start supervisord

Bonnes pratiques

  • Utilisez des noms de programmes descriptifs.
  • Configurez la rotation des journaux à l'aide de stdout_logfile_maxbytes et stdout_logfile_backups.
  • Utilisez la directive environment pour gérer les variables.

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn