ホームページ > バックエンド開発 > PHPチュートリアル > PHP はリクエストをどのように受信するのでしょうか?

PHP はリクエストをどのように受信するのでしょうか?

藏色散人
リリース: 2023-04-07 07:22:02
転載
3097 人が閲覧しました

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 インタープリタがあります。コードは各ワーク プロセス内にコピーがあります。コードが実際に実行されるのはワーク プロセスです。

SO

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

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート