nginx php はどのようにリクエストを実行しますか?以下の記事では、nginx php 実行リクエストの動作原理を紹介しますので、参考になると思いますので、困っている方は参考にしていただければ幸いです。
php の動作原理
まず、cgi、php-cgi、fastcgi、php-fpm の関係を理解しましょう。 php
cgi プロトコルの動作原理を理解するのに役立つように、よく耳にします。
cgi プロトコルは、Web サーバー (たとえば、 nginx として)、コンテンツ配信サーバーの配信です。 どのようなデータが送信され、どのような形式で送信されますか。
php-cgi プロセス インタプリタ
php -cgi は php の CGI プロトコル プロセス インタプリタであり、起動するたびに、php.ini ファイルのロード -> 実行環境の初期化 -> リクエストの処理 -> コンテンツをwebserver ->php-cgi process exit
fastcgi プロトコル
fastcgi プロトコルは、cgi プロトコルの効率向上を補足するものです。これは主に、リクエストが来るたびに CGI インタープリタ プロセスを開始する必要があるために最適化されていますが、Web サーバー リクエストを受信するたびに、CGI インタープリタ プロセスは php.ini ファイルをリロードし、実行環境を初期化する必要がなくなりました
php-fpm プロセス マネージャー
php-fpm は、fastcgi プロトコルの実装であり、マスター プロセスとワーカー プロセスを含むプロセス マネージャーです。起動時にマスター プロセスがポートをリッスンし、Web サーバーからリクエストを受信します。通常は複数のワーカー プロセスがあり、各ワーカー プロセスには PHP コードの実行に使用される CGI プロセス インタプリタがあります
#php の起動と動作原理
phpfpm を起動するとマスタープロセスが起動され、php.ini ファイルを読み込み、実行環境を初期化し、複数のワーカープロセスを起動します。リクエストが届くたびに、そのリクエストは処理のためにワーカー プロセスに渡されます。php スムーズ リスタート原則
php. ini 設定が変更されました 再起動後、新しいワーカー プロセスが開始されて新しい設定が読み込まれ、作業が完了すると既存のプロセスが破棄されるため、スムーズな再起動が実現します。 nginx の動作原理
nginx と php 間の連携原理を理解したい場合は、まず nginx 設定ファイルのサーバー部分についても理解する必要がありますserver {
listen 80; #监听80端口,接收http请求
server_name www.example.com; #一般存放网址,表示配置的哪个项目
root /home/wwwroot/zensmall/public/; # 存放代码的根目录地址或代码启动入口
index index.php index.html; #网站默认首页
#当请求网站的url进行location的前缀匹配且最长匹配字符串是该配置项时,按顺序检查文件是否存在,并返回第一个找到的文件
location / {
#try_files,按顺序检查文件是否存在,返回第一个找到的文件
#$uri代表不带请求参数的当前地址
#$query_string代表请求携带的参数
try_files $uri $uri/ /index.php?$query_string; #按顺序检查$uri文件,$uri地址是否存在,如果存在,返回第一个找到的文件;如果都不存在,发起访问/index.php?$query_string的内部请求,该请求会重新匹配到下面的location请求
}
#当请求网站的php文件的时候,反向代理到php-fpm去处理
location ~ \.php$ {
include fastcgi_params; #引入fastcgi的配置文件
fastcgi_pass 127.0.0.1:9000; #设置php fastcgi进程监听的IP地址和端口
fastcgi_index index.php; #设置首页文件
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #设置脚本文件请求的路径
}
}
上記のサーバー構成の全体的な意味は次のとおりです。nginx は毎回、ポート 80 で URL リクエストを監視し、URL で位置一致を実行します。 / ルールが一致する場合、内部リクエストはリダイレクトされ、/index.php?$query_string の内部リクエストが開始され、対応する場所設定ルールによってポートでリッスンする php-fpm のマスター プロセスにリクエストが送信されます。 9000
次に、最も単純なユーザー要求プロセスを要約します。 ユーザーはドメイン名にアクセスします - > ドメイン名前が DNS 解決を実行します -> 対応する IP サーバーとポートにリクエストします -> nginx が対応するポートのリクエストをリッスンします -> nginx が URL で位置一致を実行します -> 一致する場所に基づいてルールを実行します -> nginx がリクエストを php->php-fpm に転送します マスター プロセスが nginx リクエストをリッスンします -> マスター プロセスがアイドル状態のワーカー プロセスの 1 つにリクエストを割り当てます -> ワーカー プロセスがリクエストを実行します -> ワーカープロセスは実行結果をnginxに返します->nginxは結果をユーザーに返します
以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !以上がnginx+php はリクエストをどのように実行しますか?動作原理の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。