ホームページ  >  記事  >  バックエンド開発  >  PHP の CGI、FastCGI、APACHE2HANDLER、および CLI 動作モードの詳細な説明

PHP の CGI、FastCGI、APACHE2HANDLER、および CLI 動作モードの詳細な説明

*文
*文オリジナル
2017-12-26 10:50:173929ブラウズ

CGI、FastCGI、APACHE2HANDLER、および CLI の違いは何ですか?この記事では、PHP の一般的な 4 つの実行方法を主に紹介し、CGI、FastCGI、APACHE2HANDLER、CLI について詳しく説明します。お役に立てれば幸いです。

SAPI: サーバー アプリケーション プログラミング インターフェイス サーバー アプリケーション プログラミング ポート。 PHP が他のアプリケーションと対話するためのインターフェイスです。PHP スクリプトは、Web サーバー経由、コマンド ライン上で直接実行する、または他のプログラムに埋め込むなど、さまざまな方法で実行できます。 SAPI は外部通信用のインターフェイスを提供します。一般的な SAPI には、cgi、fast-cgi、cli、Apache モジュール dll などが含まれます。

1. CGI

CGIは、平たく言えばWebページとHTMLを繋ぐ橋渡しのようなプログラムです。サーバーの実行プログラムに送信され、サーバーの実行プログラムの結果が HTML ページに返されます。 CGI は非常にクロスプラットフォームであり、ほぼすべてのオペレーティング システムに実装できます。

CGI メソッドが接続リクエスト (ユーザーリクエスト) に遭遇すると、まず CGI サブプロセスを作成し、CGI プロセスをアクティブにしてからリクエストを処理し、処理後にサブプロセスを終了する必要があります。これはフォークして実行するパターンです。したがって、CGI を使用するサーバーには、接続要求と同じ数の CGI サブプロセスが存在することになり、サブプロセスの繰り返しロードが CGI パフォーマンスを低下させる主な原因となります。ユーザーリクエストの数が非常に多い場合、メモリやCPU時間などのシステムリソースが大量に占有され、パフォーマンスが低下します。

2. FastCGI

fast-cgi は、cgi のアップグレード版のようなもので、有効化されている限り、毎回実行することができます。一度フォークする時が来ました。 PHP は管理に PHP-FPM (FastCGI Process Manager)、つまり PHP FastCGI Process Manager の正式名を使用します。

Web サーバーの起動時に FastCGI プロセス マネージャー (IIS ISAPI または Apache モジュール) をロードします。 FastCGI プロセス マネージャーは自身を初期化し、複数の CGI インタープリター プロセス (複数の php-cgi が表示されます) を開始し、Web サーバーからの接続を待ちます。

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

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

上記の場合、CGI が通常どれほど遅いか想像できるでしょう。 PHP へのすべての Web リクエストでは、php.ini を再解析し、すべての拡張機能を再ロードし、すべてのデータ構造を再初期化する必要があります。 FastCGI では、これらすべてがプロセスの開始時に 1 回だけ行われます。さらに、永続的なデータベース接続が機能するという利点もあります。

3. APACHE2HANDLER
PHP は Apache モジュールであり、システムが起動されると、Apache サーバーはメモリ内に常駐する複数のプロセスのコピーを事前に生成し、これらの予備の子プロセスがすぐに処理に使用されます。子プロセスの生成による遅延が発生しないようにします。これらのサーバー コピーは、HTTP 要求の処理後すぐには終了せず、次の要求を待ってコンピューター内に留まります。クライアントのブラウザ要求に対する応答が速くなり、パフォーマンスが向上します。

4. CLI

cli は、PHP のコマンドライン実行モードです。よく使用しますが、気づかないかもしれません (例: Linux では、PHP の拡張子を確認するためによく「php -m」を使用します)。これは PHP コマンドライン実行モードです。 CGI モードで実行するという意味ですか?

以上がPHP の CGI、FastCGI、APACHE2HANDLER、および CLI 動作モードの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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