FastCGI の原理
FastCGI は、HttpServer と動的スクリプト言語間の通信に使用されるインターフェイスです。最も人気のある Http サーバーです。 Apache、Nginx、lighttpd などの FastCGI をサポートします。同時に、FastCGI は、PHP を含む多くのスクリプト言語でもサポートされています。 (推奨学習: nginx チュートリアル)
FastCGI インターフェイスは C/S 構造を採用しており、HttP サーバーとスクリプト解析サーバーを分離し、スクリプト解析サーバー上で 1 つ以上のスクリプトを開始できます。同時に Parse デーモンも実行します。
HttP サーバーが動的プログラムに遭遇すると、そのプログラムは FastCGI プロセスに直接配信されて実行され、結果がクライアントに返されます。この方法により、HttP サーバーは静的リクエストを排他的に処理したり、動的スクリプト サーバーの結果をクライアントに返すことができるようになり、アプリケーション システム全体のパフォーマンスが大幅に向上します。
Nginx php-fpm 実装原則
Nginx 自体は PHP を解析せず、PHP ページに対する端末リクエストは Nginx によって FastCGI プロセスに渡されます。監視されたIPアドレスとポートは動的解析サーバーであるphp-fpmで処理され、最終的に処理結果がnginxに返されます。
実際、Nginx はリバース プロキシ サーバーです。 Nginx は、動的リクエストをリバースプロキシ機能を介してバックエンド php-fpm に転送することで、PHP 解析のサポートを実現します。これが、Nginx が PHP 動的解析を実装する原理です。
Nginx は、外部プログラムの直接呼び出しや解析をサポートしていません。すべての外部プログラム (PHP を含む) は、FastCGI インターフェイスを通じて呼び出す必要があります。
FastCGI インターフェイスは、Linux 上のソケットです (このソケットはファイル ソケットまたは IP ソケットにすることができます)。 CGI プログラムを呼び出すには、FastCGI ラッパーも必要です (ラッパーは、別のプログラムを開始するために使用されるプログラムとして理解できます) このラッパーは、ポートやファイル ソケットなどの固定ソケットにバインドされます。
Nginx が FastCGI インターフェイスを介してこのソケットに CGI リクエストを送信すると、ラッパーはリクエストを受信し、新しいスレッドを生成します。このスレッドは、インタープリタまたは外部プログラムを呼び出してスクリプトを処理し、戻りデータを読み取ります。 . ; 次に、ラッパーは返されたデータを FastCGI インターフェイスおよび固定ソケット経由で Nginx に渡し、最後に Nginx は返されたデータをクライアントに送信します。
以上がphpfpm と nginx の通信方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。