推奨: 「PHP ビデオ チュートリアル 」
PHP には 5 つの動作モードがあり、一般的なモードは 4 つあります。
1.CGI (共通ゲートウェイインターフェース)
2.FastCGI (常駐CGI/ロングライブCGI)
3.CLI (コマンドラインインターフェース)
4.LoadModule [Apache専用]
5.ISAPI (インターネット サーバー アプリケーション プログラム インターフェイス) [IIS 専用]
注: PHP5.3 以降、PHP には ISAPI モードがなく、インストール後にも存在しません。php5isapi.dll ファイル。 IIS6 で上位バージョンの PHP を使用するには、FastCGI 拡張機能をインストールし、IIS6 が FastCGI をサポートできるようにする必要があります。
現在の実行モードの表示
echo php_sapi_name();
CGI モード
はじめに:
CGI は Common Gateway Interface (Common Gateway Interface) のことで、プログラムです。平たく言えば、Web ページと Web サーバー上の実行プログラムを接続する橋のようなものです。HTML を受け取ります。命令はサーバーの実行プログラムに渡され、サーバーの実行プログラムの結果が HTML ページに返されます。 CGI は非常にクロスプラットフォームであり、ほぼすべてのオペレーティング システムに実装できます。
呼び出しプロセス: Fork-And-Execute モード
ユーザー リクエスト —> Web サーバーがリクエストを受信 [一般的に使用される Nginx、Apache] —> CGI 子プロセスをフォーク &Processリクエスト-->リクエストが処理された後、結果をWebサーバーに返します&子プロセスを破棄します->Webサーバーは結果をユーザーに返します
#イラスト:
利点:
プロセスは分離されており、データが汚染されないことが保証されます
欠点:
リクエストごとに新しい CGI サブプロセスをフォークする必要があります。同時リクエストが 1,000 ある場合同時に、これは、1,000 個のサブプロセスをフォークすると、いくつかの問題が発生することを意味します。はじめに:
FastCGI は CGI のアップグレード バージョンです。FastCGI は長期間存続する CGI のようなものです。Web サーバーを起動すると、FastCGI プロセス マネージャー [ PHP-FPM、IIS ISAPI、Apache モジュール] では、リクエストが来たときに Web サーバーを FastCGI プロセス マネージャーに引き渡して処理するだけで済みます。
呼び出しプロセス: PHP-FPM を例に挙げます
Web サーバーが起動すると、PHP-FPM マスター プロセスが開始されます (主に、アイドル状態の自分自身の子にリクエストを割り当てる役割を担います)処理用のプロセス)と特定の数の fast-cgi 子プロセス(リクエストの処理を担当)。 PHP-FPM マスター プロセスはプロセス プールを管理します。プール内には複数の fast-cgi サブプロセスがあり、各 fast-cgi サブプロセスは互いに干渉することなく独立してリクエストを処理します。
イラスト:
利点:
#安定性 安全性の観点から、FastCGI は独立したプロセス プールを使用して CGI を実行します。単一のプロセスが停止した場合、システムはそれを簡単に破棄できます。その後、ロジックを実行する新しいプロセスを再割り当てします。
高速 CGI サブプロセスは一度に 1 つのリクエストしか処理できないため、Web サイトの同時パフォーマンスはサブプロセスの数によって制限されます。
オープンされているプロセスが多すぎると、CPU が無駄になります。プロセスに多くの時間がかかり、コンテキストのスイッチがオンになります。
fast-cgi 子プロセスがリクエストされるたびに、関連するリソースを再ロードする必要があり、リクエストの完了後にリソースを解放する必要があります。
CLI (コマンド ライン実行/コマンド)ライン インターフェイス)
はじめに:
php-cli モードはコマンド ライン モードに属します。 PHP の学習を開始し、wamp と wnmp を開始しました
このモードでは、他のプログラムを使用する必要はありません。php xx.php と直接入力して php コードを実行できます。
コマンド ライン モードと通常のモードの明らかな違いWeb モードは次のとおりです。
タイムアウト期間なし
バッファリングはデフォルトでオフになります
STDIN および STDOUT の標準入出力/エラーの使用
echo var_dump、phpinfo、およびその他の出力はコンソールに直接出力されます
使用できるクラス/関数が異なります
php.ini の設定が異なります
追記: 詳細については、公式ドキュメントを参照してください: www.php.net/manual/zh/features。 com...
LoadModule (Apache 専用)
はじめに:
モジュール モードは mod_php5 モジュールの形式で統合されています。このとき、mod_php5 モジュールの機能は、Apache から渡された PHP ファイルリクエストを受け取り、そのリクエストを処理し、処理結果を Apache に返すことです。
Apache 設定ファイル httpd.conf では、通常追加される LoadModule php7_module "D:/…/php71/php7apache2_4.dll" がこの
呼び出しプロセスの役割を果たします:
ユーザー リクエスト -> Apache サーバー -> mod_php5 モジュールを呼び出してリクエストを処理する -> リクエストの結果を Apache に返す -> Apache は結果をユーザーに返す
#図:
ISAPI (インターネット サーバー アプリケーション プログラム インターフェイス)
概要:
PHP5 では、3 以降、PHP には ISAPI モードがなくなり、インストール後に php5isapi.dll ファイルはなくなります。 IIS6 で上位バージョンの PHP を使用するには、FastCGI 拡張機能をインストールし、IIS6 が FastCGI をサポートできるようにする必要があります。ですので、ここではあまり紹介しません#図解:現在、インターネットの爆発的な発展に伴い、ほとんどの Web サイトは Web サイトの高い同時実行パフォーマンスを考慮する必要があります。 Nginx は、軽量で優れた同時実行パフォーマンスにより、開発者の間でますます好まれています。かつてインターネット上で人気だった LAMP の組み合わせは、もはや PHP 開発者にとっての最初の選択肢ではなくなりました。突然登場した LNMP の組み合わせは、PHPer の必須コースとなりました。その結果、Apache ベースの LoadModule モデルについて言及されることはますます少なくなりました。
さらに、コマンド ライン スクリプトの作成に使用される CLI モードと、ほぼ消滅した ISAPI モードは、明らかに Web サイトの構築には適していません。CGI の拡張バージョンとして、Fast-CGI モードは CGI のシンプルさとセキュリティを継承し、PHP-FPM を使用して子プロセスを管理することで、Web サーバーが I/O の処理により集中できるようにします。PHP-FPM は管理および保守します。プロセス プール。あらかじめ一定数の子プロセスを fork して処理要求を待つことができ、要求が来たときに子プロセスを fork したり、要求が終了したときに子プロセスを破棄したりする必要はありません。
以上がPHP の動作モードについて説明しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。