Maison >développement back-end >Problème PHP >Comment résoudre le problème de la fermeture automatique du processus PHP-CGI
Le processus Linux PHP-CGI s'arrête automatiquement
Le processus PHP-CGI est un moyen très courant d'exécuter des scripts PHP, mais parfois ces processus s'arrêtent automatiquement, empêchant le site Web de fonctionner correctement. Cet article explique comment résoudre le problème de la fermeture automatique du processus PHP-CGI.
Tout d'abord, vous devez vérifier les journaux de votre système pour déterminer pourquoi le processus PHP-CGI s'est arrêté automatiquement. Dans la plupart des distributions Linux, les fichiers journaux système se trouvent dans le répertoire /var/log. Vous pouvez utiliser la commande suivante pour afficher les journaux système récents :
$ sudo tail -f /var/log/syslog
Si le processus PHP-CGI s'arrête automatiquement en raison d'une mémoire insuffisante ou d'autres ressources, vous verrez des informations similaires aux suivantes dans le fichier journal :
Apr 15 14:35:26 myserver kernel: Out of memory: Kill process 1234 (php-cgi) score 5678 or sacrifice child
Ce qui précède les informations indiquent que le système a tué le processus PHP-CGI pour libérer de la mémoire.
Si votre système arrête automatiquement le processus PHP-CGI en raison de ressources insuffisantes, vous pouvez résoudre le problème en ajustant la limite du processus. Les limites du processus peuvent être ajustées à l'aide de la commande ulimit. Par exemple, la commande suivante augmentera la quantité maximale de mémoire pouvant être utilisée par chaque processus à 512 Mo :
$ ulimit -v 524288
Vous pouvez ajouter cette commande au script de démarrage du processus PHP-CGI pour qu'elle prenne effet immédiatement lorsque le processus PHP-CGI est exécuté. commencé.
De plus, si votre processus PHP-CGI s'arrête automatiquement parce qu'il s'exécute trop longtemps, vous pouvez résoudre ce problème en ajustant le délai d'attente CGI. Le délai d'expiration CGI peut être défini dans le fichier de configuration de votre serveur Web. Par exemple, le fichier de configuration Nginx suivant définit le délai d'expiration CGI à 30 secondes :
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_read_timeout 30; include fastcgi_params; }
Vous pouvez définir fastcgi_read_timeout sur une valeur appropriée requise par votre application PHP.
Enfin, si vous rencontrez un problème non résolu de fermeture automatique du processus PHP-CGI, vous pouvez envisager d'utiliser Process Manager. Process Manager peut surveiller automatiquement les processus PHP-CGI et les redémarrer automatiquement après leur panne ou leur arrêt. Les gestionnaires de processus courants incluent Supervisor et systemd.
Avant d'utiliser les gestionnaires de processus, vous devez comprendre comment les utiliser. En prenant Supervisor comme exemple ici, vous pouvez utiliser la commande suivante pour l'installer :
$ sudo apt-get install supervisor
Après l'installation, vous devez créer un fichier de configuration Supervisor, par exemple :
[program:php-cgi] command=/usr/bin/php-cgi -b 127.0.0.1:9000 autostart=true autorestart=true redirect_stderr=true
Le fichier de configuration ci-dessus permet à Supervisor de démarrer et de surveiller automatiquement le Processus PHP-CGI. Vous pouvez modifier le fichier de configuration en fonction des paramètres de votre processus PHP-CGI.
Enfin, vous devez démarrer Supervisor à l'aide de la commande suivante :
$ sudo systemctl start supervisor
Résumé :
Le processus PHP-CGI est un moyen courant d'exécuter des scripts PHP sur des serveurs Web. Si votre processus PHP-CGI s'arrête automatiquement, vous pouvez résoudre le problème en affichant les journaux système, en ajustant les limites du processus, en ajustant les délais d'attente CGI et en utilisant le gestionnaire de processus. Afin de garantir que le processus PHP-CGI est toujours disponible, vous pouvez utiliser une combinaison des méthodes ci-dessus.
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!