ホームページ  >  記事  >  バックエンド開発  >  nginxとphp-fpmの関係

nginxとphp-fpmの関係

(*-*)浩
(*-*)浩オリジナル
2019-09-03 13:19:314108ブラウズ

nginxとphp-fpmの関係

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 サイトの他の関連記事を参照してください。

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