ホームページ >バックエンド開発 >PHPの問題 >PHP-CGIプロセスが自動的に終了する問題を解決する方法

PHP-CGIプロセスが自動的に終了する問題を解決する方法

PHPz
PHPzオリジナル
2023-03-29 11:28:511419ブラウズ

Linux PHP-CGI プロセスが自動的に終了する

PHP-CGI プロセスは、PHP スクリプトを実行する非常に一般的な方法ですが、場合によってはこれらのプロセスが自動的に終了し、Web サイトが適切に実行されなくなることがあります。この記事では、PHP-CGIプロセスが自動的に終了してしまう問題の解決方法を紹介します。

  1. ログの表示

まず、システム ログを確認して、PHP-CGI プロセスが自動的にシャットダウンした理由を特定する必要があります。ほとんどの Linux ディストリビューションでは、システム ログ ファイルは /var/log ディレクトリにあります。次のコマンドを使用して、最近のシステム ログを表示できます:

$ sudo tail -f /var/log/syslog

メモリまたはその他のリソースが不足しているために PHP-CGI プロセスが自動的にシャットダウンした場合、ログ ファイルに次のような情報が表示されます。 ##

Apr 15 14:35:26 myserver kernel: Out of memory: Kill process 1234 (php-cgi) score 5678 or sacrifice child
上記の情報は、システムがメモリを解放するために PHP-CGI プロセスを強制終了したことを示しています。

    プロセス制限を調整する
リソース不足によりシステムが PHP-CGI プロセスを自動的にシャットダウンする場合は、プロセス制限を調整することで問題を解決できます。プロセス制限は、ulimit コマンドを使用して調整できます。たとえば、次のコマンドは、各プロセスで使用できるメモリの最大量を 512MB に増やします:

$ ulimit -v 524288
このコマンドを PHP-CGI プロセス起動スクリプトに追加すると、PHP-CGI をすぐに起動できます。プロセスが有効になります。

    CGI タイムアウトを調整する
さらに、PHP-CGI プロセスの実行時間が長すぎるために自動的にシャットダウンする場合は、CGI タイムアウトを調整することでこれを解決できます。 。 質問。 CGI タイムアウトは、Web サーバー構成ファイルで設定できます。たとえば、次の Nginx 構成ファイルは CGI タイムアウトを 30 秒に設定します。

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;
}
fastcgi_read_timeout を PHP アプリケーションが必要とする適切な値に設定できます。

    プロセス マネージャーの使用
最後に、PHP-CGI プロセスの自動シャットダウンという未解決の問題が発生した場合は、プロセス マネージャーの使用を検討してください。 Process Manager は、PHP-CGI プロセスを自動的に監視し、クラッシュまたは停止した後に自動的に再起動できます。一般的なプロセス マネージャーには、Supervisor や systemd などがあります。

プロセス マネージャーを使用する前に、その使用方法を理解する必要があります。ここではスーパーバイザーを例として、次のコマンドを使用してインストールできます:

$ sudo apt-get install supervisor
インストール後、スーパーバイザー構成ファイルを作成する必要があります。例:

[program:php-cgi]
command=/usr/bin/php-cgi -b 127.0.0.1:9000
autostart=true
autorestart=true
redirect_stderr=true
上記の構成ファイルSupervisor が PHP-CGI プロセスを自動的に開始して監視できるようにすることができます。 PHP-CGI プロセス設定に従って構成ファイルを変更できます。

最後に、次のコマンドを使用してスーパーバイザを起動する必要があります:

$ sudo systemctl start supervisor
概要:

PHP-CGI プロセスは、Web サーバーで PHP スクリプトを実行する一般的な方法です。 PHP-CGI プロセスが自動的にシャットダウンする場合は、システム ログを表示し、プロセス制限を調整し、CGI タイムアウトを調整し、プロセス マネージャーを使用することで問題を解決できます。 PHP-CGI プロセスを常に利用できるようにするには、上記の方法を組み合わせて使用​​します。

以上がPHP-CGIプロセスが自動的に終了する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。