php はリクエストをどのように受信するのでしょうか?
#● nginx はどのようにリクエストを PHPFPM に転送しますか?
#● CGI と FastCGI とは正確には何ですか? ? おもちゃ?
##● PHPFPM とは何ですか?効果は何ですか?簡単なシーン説明
ブラウザ上でphp nginx mysqlで構築されたモールにアクセスし、商品を購入します。
分析 (ここでアクセスできるリソースは 2 つあります)
#● 静的リソース (一部の画像、Web サイトのアイコンなど) #● 動的リソース (購入した製品の価格、製品の紹介など)
ブラウザがリクエストを開始 --> web_server (nginx) の配布処理 --> PHP がコードを実行し、結果を返します (このはおおよそのプロセスです)
nginx はどのようにリクエストを分散しますか?ユーザーがリクエストを開始すると (ブラウザーはデフォルトでポート 80 をリクエストします)、nginx はポート 80 をリッスンし、静的リソースに属しているかどうか nginx を介して通常の一致を設定します。静的リソースの場合、ファイルが返されてリクエストは終了します。それが動的リソースであり、リクエストの php スクリプトが正規表現によって一致する場合、nginx モジュール ngx_http_fastcgi_module を通じて処理するためにリクエストを PHPFPM に分散し、処理後に結果を返します。 # CGI
CGI は、Web サーバーが外部プログラムを実行するための仕様です。これは、CGI 標準形式を通じて CGI を通じてプログラムと通信できることを意味します。プログラムはブラウザと対話できます。
(CGI を簡単に理解すると、何かを送信する方法、プログラムが処理を受け入れる方法などを規定するプロトコルです)
● PHP-CGI
PHP -CGI は、CGI プロトコル php の実装バージョンです。 PHP-CGI はリクエストごとにプロセスをフォークし、処理が完了すると終了します。 (このパターンはフォークして実行と呼ばれます)。このモデルは現在の大規模交通に対応できず、歴史の舞台から退いてしまった。
# FastCGI
FastCGI は CGI のアップグレード バージョンで、マスター プロセスを事前に開始して構成ファイルを読み取り、複数のワーク プロセスをフォークして接続を待機します。リクエストを聞いた後、特定の処理のためにワークプロセスが割り当てられます。これにより、プログラムのパフォーマンスが大幅に向上します。 (FastCGiはプロセスを管理し、処理が完了しても簡単には破棄しません。CGIはリクエストごとにプロセスを作成し、プロセスを破棄します。)
#● PHPFPM最適な言語として世界では、もちろんトレンドについていかなければなりません。 PHP-CGI のパフォーマンスが低いことが判明したときに、たまたま FastCGI プロトコルが登場しました。そのため、PHP は PHPFPM (FastCGI Process Manager) と呼ばれる FastCGI の php バージョンを実装します。 PHPFPM が開始されると、マスター プロセスといくつかのワーク プロセスが開始されます。マスター プロセスはリクエストをリッスンし、処理のためにワーク プロセスに転送します。各ワーク プロセスには php インタープリタがあります。コードは各ワーク プロセス内にコピーがあります。コードが実際に実行されるのはワーク プロセスです。 SOPHPFPM はポート 9000 をリッスンし、nginx は php ファイルと照合してリクエストを PHPFPM に転送します。 PHPFPM マスターがリクエストをリッスンした後、処理用のワークに割り当てられます (各ワーク プロセスには php インタープリタがあります)。PHPFPM が開始されると、ワーク プロセスは設定と作成したコードをすでにロードしています。したがって、ワークプロセスはリクエストを受信するとすぐに実行し、結果を返します。ngx_http_fastcgi_module module
ブラウザリクエストの web_server は http プロトコルまたは https プロトコルですが、PHPFPM は何をすべきかを理解できません。ここで、nginx は、http または https リクエストを FastCGI リクエストにマップする ngx_http_fastcgi_module を提供します。このようにして、php プログラムはユーザーと対話できるようになります。完全に個人的な理解なので、間違いがあればご指摘ください。
関連する推奨事項: [PHP チュートリアル
]以上がPHP はリクエストをどのように受信するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。