[転送] FastCgi と PHP-fpm の関係を理解する
Jul 06, 2016 pm 01:28 PM質(zhì)問: インターネット上の一部の人は、fastcgi はプロトコルであり、php-fpm がこのプロトコルを?qū)g裝していると主張しています。また、php-fpm は fastcgi プロセスの管理に使用されるマネージャであると言う人もいます。 - fpm は php カーネルのパッチです。php.ini 設(shè)定ファイルを変更するとスムーズに再起動できないため、php-fpm が付屬する FastCGI マネージャーであるという人もいます。 PHP
そもそもCGIとは何でしょうか? CGI は、Web サーバーによって渡されるデータが標(biāo)準(zhǔn)形式であることを保証するもので、これは CGI プログラムの作成者にとって便利です。
Webサーバー(nginxなど)は単なるコンテンツの配信者です。たとえば、構(gòu)成ファイルに従ってリクエストが行われた場合、nginx はこれが靜的ファイルではなく、PHP パーサーによって処理される必要があることを認(rèn)識しているため、単純にリクエストを処理して PHP パーサーに渡します。 Nginx はどのようなデータを PHP パーサーに渡しますか? URL、クエリ文字列、POST データ、HTTP ヘッダーが存在する必要があります。CGI は、どのようなデータをどのような形式で送信するかを規(guī)定するプロトコルです。リクエストを処理するバックエンド。 PHP コードで使用するユーザーがどこから來たのかを慎重に考えてください。 /index.html
,那么web server會去文件系統(tǒng)中找到這個(gè)文件,發(fā)送給瀏覽器,這里分發(fā)的是靜態(tài)數(shù)據(jù)。好了,如果現(xiàn)在請求的是/index.php
Web サーバーがこのリクエストを受信すると、対応する CGI プログラムが開始されます。これが PHP パーサーです。次に、PHP パーサーは php.ini ファイルを解析し、実行環(huán)境を初期化し、リクエストを処理し、CGI で指定された形式で処理結(jié)果を返し、プロセスを終了します。その後、Web サーバーは結(jié)果をブラウザーに返します。 /index.php
わかりました、CGIはプロトコルであり、プロセスなどとは何の関係もありません。では、fastcgi とは何でしょうか? Fastcgi は、CGI プログラムのパフォーマンスを向上させるために使用されます。
パフォーマンスを向上させる、では CGI プログラムのパフォーマンスの問題は何でしょうか? 「PHP パーサーは php.ini ファイルを解析し、実行環(huán)境を初期化します?!工饯欷坤堡扦埂?biāo)準(zhǔn) CGI はリクエストごとにこれらの手順を?qū)g行するため (疲れる必要はありません。プロセスを開始するのは非常に面倒です!)、毎回の処理時(shí)間は比較的長くなります。これは明らかに不合理です!では、Fastcgi はどのようにしてそれを行うのでしょうか?まず、Fastcgi はマスターを起動し、構(gòu)成ファイルを解析し、実行環(huán)境を初期化してから、複數(shù)のワーカーを起動します。リクエストが來ると、マスターはそれをワーカーに渡し、すぐに次のリクエストを受け入れることができます。これにより、作業(yè)の重複が回避され、當(dāng)然のことながら非常に効率的になります。また、十分なワーカーがない場合、マスターは構(gòu)成に従っていくつかのワーカーを事前に開始し、待機(jī)することができます。もちろん、アイドル狀態(tài)のワーカーが多すぎる場合は一部が停止されるため、パフォーマンスが向上し、リソースが節(jié)約されます。これがfastcgiのプロセス管理です。
それでは、PHP-FPMとは何でしょうか? Fastcgi を?qū)g裝したプログラムであり、PHP に正式に受け入れられました。
ご存知のとおり、PHP のインタプリタは php-cgi です。 php-cgi は単なる CGI プログラムであり、リクエストを解析して結(jié)果を返すことしかできませんが、プロセスを管理する方法は知りません (陛下、私にはそんなことはできません!)。そのため、php-cgi をスケジュールできるプログラムがいくつかあります。たとえば、spawn-fcgi は lighthttpd から分離されます。まあ、PHP-FPM も同様で、長い開発期間を経て、徐々に誰もが認(rèn)めるようになりました (ご存知のとおり、ここ數(shù)年、PHP-FPM の安定性の悪さについて誰もが不満を抱いていました)。ますます人気があります。
さて、最後に質(zhì)問に戻ります。
1. インターネット上の一部の人々は、fastcgi がプロトコルであり、php-fpm がこのプロトコルを?qū)g裝していると言っています
はい。
2. php-fpmはfastcgiプロセスの管理に使われるマネージャーだと言う人もいます
はい。 php-fpmの管理オブジェクトはphp-cgiです。ただし、php-fpm が fastcgi プロセスの管理者であるとは言えません。前述したように、fastcgi はプロトコルであり、php-fpm が存在したとしても、それを管理することはできないようです。今のところ)。 php-fpm は PHP カーネルのパッチであると言う人もいます。これは以前は真実でした。 php-fpm は最初から PHP カーネルに含まれていないため、この機(jī)能を使用するにはソースコードのバージョンと同じ php-fpm を見つけてカーネルにパッチを當(dāng)て、コンパイルする必要があります。その後、PHP カーネルに PHP-FPM が統(tǒng)合されてからは、--enalbe-fpm
コンパイル パラメーターを使用するだけでさらに便利になりました。
3. php.ini設(shè)定ファイルを変更した後、スムーズに再起動する方法がないという人もいますので、php-fpmが誕生しました
はい、php.iniを変更した後、php-cgiプロセスがスムーズに再起動できなくなりました。 php-fpm の処理メカニズムは、新しいワーカーは新しい構(gòu)成を使用し、既存のワーカーは現(xiàn)在の作業(yè)が終了した後に休むことができるというもので、このメカニズムは移行をスムーズにするために使用されます。
4. PHP-CGI は PHP に付屬している FastCGI マネージャーだと言う人もいますが、それなら、なぜ別の php-fpm を作成する必要がありますか
。そうではありません。 php-cgi は、PHP スクリプトを解釈する?yún)gなるプログラムです。
原文抜粋:https://segmentfault.com/q/1010000000256516

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)