Heim > Artikel > Backend-Entwicklung > So lösen Sie das Problem, dass der PHP-CGI-Prozess automatisch geschlossen wird
Linux PHP-CGI-Prozess wird automatisch heruntergefahren
Der PHP-CGI-Prozess ist eine sehr verbreitete Methode zum Ausführen von PHP-Skripten, aber manchmal werden diese Prozesse automatisch heruntergefahren, was dazu führt, dass die Website nicht richtig läuft. In diesem Artikel erfahren Sie, wie Sie das Problem des automatischen Schließens des PHP-CGI-Prozesses lösen können.
Zuerst müssen Sie Ihre Systemprotokolle überprüfen, um festzustellen, warum der PHP-CGI-Prozess automatisch heruntergefahren wird. Bei den meisten Linux-Distributionen befinden sich Systemprotokolldateien im Verzeichnis /var/log. Sie können den folgenden Befehl verwenden, um aktuelle Systemprotokolle anzuzeigen:
$ sudo tail -f /var/log/syslog
Wenn der PHP-CGI-Prozess aufgrund von unzureichendem Speicher oder anderen Ressourcen automatisch heruntergefahren wird, werden in der Protokolldatei Informationen ähnlich der folgenden angezeigt:
Apr 15 14:35:26 myserver kernel: Out of memory: Kill process 1234 (php-cgi) score 5678 or sacrifice child
Das Obige Informationen deuten darauf hin, dass das System den PHP-CGI-Prozess beendet hat, um Speicher freizugeben.
Wenn Ihr System den PHP-CGI-Prozess aufgrund unzureichender Ressourcen automatisch abschaltet, können Sie das Problem lösen, indem Sie das Prozesslimit anpassen. Prozessgrenzen können mit dem Befehl ulimit angepasst werden. Der folgende Befehl erhöht beispielsweise die maximale Speichermenge, die von jedem Prozess verwendet werden kann, auf 512 MB:
$ ulimit -v 524288
Sie können diesen Befehl zum Startskript des PHP-CGI-Prozesses hinzufügen, damit er sofort wirksam wird, wenn der PHP-CGI-Prozess ausgeführt wird begonnen.
Wenn Ihr PHP-CGI-Prozess außerdem automatisch heruntergefahren wird, weil er zu lange läuft, können Sie dieses Problem lösen, indem Sie das CGI-Timeout anpassen. Das CGI-Timeout kann in Ihrer Webserver-Konfigurationsdatei festgelegt werden. Beispielsweise legt die folgende Nginx-Konfigurationsdatei das CGI-Timeout auf 30 Sekunden fest:
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; }
Sie können fastcgi_read_timeout auf einen geeigneten Wert setzen, den Ihre PHP-Anwendung benötigt.
Wenn Sie schließlich auf ein ungelöstes Problem beim automatischen Herunterfahren des PHP-CGI-Prozesses stoßen, können Sie die Verwendung von Process Manager in Betracht ziehen. Process Manager kann PHP-CGI-Prozesse automatisch überwachen und sie nach einem Absturz oder Stopp automatisch neu starten. Zu den gängigen Prozessmanagern gehören Supervisor und systemd.
Bevor Sie Prozessmanager verwenden, müssen Sie verstehen, wie man sie verwendet. Wenn Sie Supervisor hier als Beispiel nehmen, können Sie den folgenden Befehl verwenden, um es zu installieren:
$ sudo apt-get install supervisor
Nach der Installation müssen Sie eine Supervisor-Konfigurationsdatei erstellen, zum Beispiel:
[program:php-cgi] command=/usr/bin/php-cgi -b 127.0.0.1:9000 autostart=true autorestart=true redirect_stderr=true
Die obige Konfigurationsdatei ermöglicht es Supervisor, das automatisch zu starten und zu überwachen PHP-CGI-Prozess. Sie können die Konfigurationsdatei entsprechend Ihren PHP-CGI-Prozesseinstellungen ändern.
Abschließend müssen Sie Supervisor mit dem folgenden Befehl starten:
$ sudo systemctl start supervisor
Zusammenfassung:
Der PHP-CGI-Prozess ist eine gängige Methode zum Ausführen von PHP-Skripten auf Webservern. Wenn Ihr PHP-CGI-Prozess automatisch heruntergefahren wird, können Sie das Problem lösen, indem Sie Systemprotokolle anzeigen, Prozessgrenzen anpassen, CGI-Timeouts anpassen und den Prozessmanager verwenden. Um sicherzustellen, dass der PHP-CGI-Prozess immer verfügbar ist, können Sie eine Kombination der oben genannten Methoden verwenden.
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass der PHP-CGI-Prozess automatisch geschlossen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!