Maison >développement back-end >Problème PHP >Comment résoudre le problème de la fermeture automatique du processus PHP-CGI

Comment résoudre le problème de la fermeture automatique du processus PHP-CGI

PHPz
PHPzoriginal
2023-03-29 11:28:511417parcourir

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.

  1. Afficher les journaux

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.

  1. Ajuster la limite du processus

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

  1. Ajustez le délai d'attente CGI

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.

  1. Utilisez Process Manager

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!

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