ホームページ  >  記事  >  PHPフレームワーク  >  PHP のいくつかの動作モードについての労働者の話

PHP のいくつかの動作モードについての労働者の話

藏色散人
藏色散人転載
2019-11-26 14:04:062333ブラウズ

workerman の使用法チュートリアル の次のコラムでは、PHP のいくつかの動作モードを紹介します。困っている友人の役に立てば幸いです。

PHP のいくつかの動作モードについての労働者の話

workman プログラムはコマンド ライン モードである php-cli モードで実行する必要があることがわかっています。これを理解する必要があります。現在、PHPにはCGI、FastCGI、CLI、Webモジュールモードの4つの動作モードがあると言われています。

CGI

正式名称は「Common Gateway Interface」で、クライアントが Web ブラウザから Web サーバー上で実行されているプログラムに接続できるようになります。リクエスト データは、クライアントとプログラムの間でデータを送信するための標準を記述します。また、CGI はどの言語にも依存しないため、言語に標準の入力、出力、および環境変数がある限り、どの言語でも作成できます。 php、perl、tclなど。

CGIはユーザーリクエストごとにメンテナンス用のサブプロセスを開く必要があるため、数が多いとパフォーマンス上の問題が発生し、近年ではほとんど使用されていません。

FastCGI

CGI のアップグレード版である FastCGI は、長寿命 CGI のようなもので、常に実行できます。 php.ini を解析し、すべての DLL 拡張機能をリロードし、すべてのデータ構造を毎回再初期化するには時間がかかります。

PHP は管理に PHP-FPM (FastCGI Process Manager)、正式名は PHP FastCGI Process Manager を使用します。

FastCGI の動作原理

FastCGI プロセス マネージャーは、Web サーバーの起動時にロードされます。

FastCGI プロセス マネージャーは、自身を初期化し、複数の CGI 解釈を開始します。サーバー プロセスは Web サーバーからの接続を待ちます;

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

FastCGI サブプロセスは処理を完了すると、同じ接続から標準出力とエラー情報を Web サーバーに返します。 FastCGI 子プロセスが接続を閉じると、リクエストが処理されます。次に、FastCGI 子プロセスは、FastCGI プロセス マネージャーからの次の接続を待機して処理します。

通常の CGI モードでは、これで終了となり、次回から最初からやり直す必要があります。しかし、FastCGI では、これらすべてがプロセスの開始時に 1 回だけ行われます。さらに、永続的なデータベース接続が機能するという利点もあります。

Cli

PHP-CLI は PHP Command Line Interface の略で、PHP をコマンドライン上で実行するためのインターフェースであり、PHP とは異なります。 Webサーバー上で動作する環境(PHP-CGIなど)。

Linux では、PHP がインストールした拡張機能を確認するために「php -m」をよく使用します。これは、PHP コマンドライン実行モードです。 php -h と入力すると、使用可能な特定のコマンドを確認できます。

php-cli モードでは、workerman と同じように、php ファイルを直接起動して実行できます

php index.php start

php-cli には、php の実行タイムアウトに関する記述がないことに注意してください。モード。

モジュールの読み込み

は通常、Apache 用です。このように、共通の本質は、LoadModule を使用して phpX_module をロードすること、つまり php を Apache として使用することです。走る。 Web 経由で php ファイルにアクセスすると、Apache は phpX_module を呼び出して php コードを解析します。では、phpX_module はどのようにしてデータを php パーサーに渡し、php コードを解析するのでしょうか?答えはサピを通じてです。

したがって、Apache が php を呼び出す上記のプロセスは次のとおりです:

apache -> httpd -> php5_module -> sapi -> php

Apache はリクエストを受信するたびに、php に接続するプロセスを生成し、sapi 経由でリクエストを完了します。ユーザーや同時ユーザーが多すぎると、サーバーがそれに耐えられなくなることは想像できます。

また、mod_php を apache にコンパイルすると、問題が発生したときに PHP の問題なのか、apache の問題なのかを判断することが困難になります。

概要

高パフォーマンスの PHP WEB サーバーを構築したい場合、現時点での最良の方法は Apache/Nginx FastCGI PHP-FPM (PHP-CGI) 方式です。 、モジュールの読み込みや CGI メソッドはもう使用しないでください

以上がPHP のいくつかの動作モードについての労働者の話の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。