ホームページ  >  記事  >  バックエンド開発  >  php と apache 間のいくつかのタイプの統合

php と apache 間のいくつかのタイプの統合

王林
王林オリジナル
2019-10-10 11:51:262728ブラウズ

php と apache 間のいくつかのタイプの統合

1. CGI

CGI (共通ゲートウェイ インターフェイス) は通常、共通ゲートウェイ インターフェイスと訳され、HTTP サーバーとマシン上の他のプログラム: Web サーバーが必要に応じて動的コンテンツを処理するための追加プログラムを開始できるようにする通信用のインターフェイス。 CGI は、Web サーバーが CGI プログラムと通信する方法を定義するプロトコルです。 WebサーバーはクライアントのHTTPリクエストを受け付けてCGIプログラムを実行するプロセスを作成し、クライアントのリクエストをCGIプログラムに渡し、CGI実行後に結果をWebサーバーに返します。

CGI の出現により、WEB は静的から動的に変わりました。Web の人気が高まるにつれ、多くの Web サイトでは閲覧者と対話するために動的ページが必要になります。ネットワーク技術の発展に伴い、CGI 手法の欠点がますます顕著になってきました。各クライアント要求では、プロセスの確立と破棄が必要です。 HTTP は動的なページを生成する必要があるため、システムは CGI プログラムを実行するために新しいプロセスを開始する必要があり、継続的なフォークは非常に時間とリソースを消費するタスクです。

2. FastCGI

ご存知のとおり、CGI インタープリタの繰り返しロードが CGI パフォーマンス低下の主な原因です。 FastCGI プロセス管理サーバー スケジューリングにより、優れたパフォーマンス、スケーラビリティ、フェイルオーバー機能などを提供できます。

FastCGI は常時実行可能な常駐 CGI であり、起動していれば毎回 fork する手間がかからず、分散コンピューティングにも対応しています (PHP プログラムの解釈と実行は別の php サーバーに任せることができます)、つまり、Web サイトサーバー以外のホストで実行し、他の Web サイトサーバーからのリクエストを受け入れることができます。

1. Web サーバーの起動時に FastCGI プロセス マネージャー (IIS ISAPI または Apache モジュール) をロードします;

2. FastCGI プロセス マネージャーは自身を初期化し、複数の CGI インタープリター プロセスを開始します (複数の PHP で) -cgi.exe はタスク マネージャーに表示され、Web サーバーからの接続を待機しています。

3. クライアント要求が Web サーバーに到達すると、FastCGI プロセス マネージャーが CGI インタープリターを選択して接続します。 Web サーバーは、CGI 環境変数と標準入力を FastCGI サブプロセス php-cgi.exe に送信します。

4. FastCGI サブプロセスは処理が完了すると、同じ接続から標準出力とエラー情報を Web サーバーに返します。 FastCGI 子プロセスが接続を閉じると、リクエストが処理されます。次に、FastCGI 子プロセスは、FastCGI プロセス マネージャー (WebServer で実行されている) からの次の接続を待機して処理します。通常の CGI モードでは、php-cgi.exe はここで終了します。

3. モジュール

PHP を Apache モジュールにコンパイルするには、Apache の MPM の動作モードを考慮する必要があります。

まず、MPM とは何かを理解する必要があります。

MPM: マルチパス モジュール (マルチパス処理モジュール) は、Apache の応答時の動作を定義するために使用されます。複数のユーザーリクエストモデル。 3 つの MPM モードがあります:

prefork (1 つのリクエストが 1 つのプロセスによって応答されます);

worker (1 つのリクエストが 1 つのスレッドで応答され、複数のプロセスが開始され、各プロセスが複数のプロセスを生成します) thread);

event (1 つのプロセスが複数のリクエストを処理します);

モジュールとしてインストールされた PHP は独立したプロセスを持たず、Apache モジュールとして Apache とともに起動されます。

上記の 3 つの MPM モードのうち、ワーカー モードはプリフォーク モードよりも占有するメモリが少なく、同時実行性が高い場合にパフォーマンスが向上します。さらに、マルチプロセスとマルチスレッドの混合モードを使用すると、1 つのスレッドがハングアップしても、そのスレッドと同じプロセス内の他のスレッドに影響が及ぶだけで、他のプロセスには影響しません。ただし、キープアライブの長い接続方法を使用するスレッドが特に多数ある場合、スレッドはタイムアウトになるまで占有され、その結果、同時実行性の高いシナリオでは使用可能なスレッドがなくなります。イベント モードは専用のスレッドを使用してこれらのキープアライブ スレッドを処理するため、この問題はより適切に解決されます。

推奨チュートリアル: PHP ビデオ チュートリアル

以上がphp と apache 間のいくつかのタイプの統合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。