php-fpm は fastCGI プロセス マネージャーです(推奨学習: Web フロントエンド ビデオ チュートリアル)
1 . Web サーバーがサーバー接続を開始するときに、FastCGI プロセス マネージャー (IIS ISAPI または Apache モジュール) をロードします。
3. クライアント要求が Web サーバーに到達すると、FastCGI プロセス マネージャーが CGI インタープリターを選択して接続します。 Web サーバーは、CGI 環境変数と標準入力を FastCGI サブプロセス php-cgi に送信します。
4. FastCGI サブプロセスは処理が完了すると、同じ接続から標準出力とエラー情報を Web サーバーに返します。 FastCGI 子プロセスが接続を閉じると、リクエストが処理されます。次に、FastCGI 子プロセスは、(Web サーバーで実行されている) FastCGI プロセス マネージャーからの次の接続を待機して処理します。 CGI モードでは、php-cgi はこの時点で終了します。
上記のケースでは、CGI が通常どれほど遅いか想像できるでしょう。 PHP へのすべての Web リクエストは、php.ini を再解析し、すべての拡張機能を再ロードし、すべてのデータ構造を再初期化する必要があります。 FastCGI では、これらすべてがプロセスの開始時に 1 回だけ行われます。さらに、永続的なデータベース接続が機能するという利点もあります。
FastCGI は、アプリケーションと WEB サーバーの間のブリッジとして機能するプロトコルです。 Nginx は PHP-FPM と直接通信できませんが、FastCGI を通じて処理するためにリクエストを PHP-FPM に渡します。location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
ここで、fastcgi_pass はすべての php リクエストを処理のために php-fpm に転送します。 netstat コマンドを実行すると、ポート 127.0.0.1:9000 で実行されているプロセスが php-fpm であることがわかります。
以上がnginxとphp-fpmの関係の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。