PHP の動作モードについて説明します

藏色散人
リリース: 2023-04-09 18:34:01
転載
3180 人が閲覧しました

推奨: 「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サーバーは結果をユーザーに返します

#イラスト:
PHP の動作モードについて説明します
利点:

PHP の初期の動作モードとして、各リクエストは独立して処理され、呼び出しプロセスは単純かつ明確で、制御性が強力です

プロセスは分離されており、データが汚染されないことが保証されます

欠点:

リクエストごとに新しい CGI サブプロセスをフォークする必要があります。同時リクエストが 1,000 ある場合同時に、これは、1,000 個のサブプロセスをフォークすると、いくつかの問題が発生することを意味します。

    #サブプロセスのフォークには時間がかかり、メモリが消費されます [コピーオンライト]
  1. サブプロセスが多すぎます。CPU がコンテキストの切り替えに多くの時間を費やすことになります
  2. ##各リクエストには関連リソースの再ロードが必要です
  3. ##FastCGI モード

はじめに:

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 サブプロセスは互いに干渉することなく独立してリクエストを処理します。

ユーザー リクエスト—> Web サーバーはリクエスト [一般的に使用される Nginx、apache] を受信します—> PHP リクエストであることを検出し、FPM マスター プロセスに転送します—> FPM マスター プロセスは、アイドル状態の fast-cgi サブプロセスがリクエストを処理します —> サブプロセスがファイル (php.ini など) およびその他のリソース処理リクエストをロードします —> 処理が終了してリソースがクリアされ、結果がマスターとサブプロセスに返されます- プロセスがハングし、アイドルとしてマークされる —> マスターが結果を Web サーバーに返す — > Web サーバーが結果をユーザーに返す

イラスト:


利点:PHP の動作モードについて説明します
#安定性 安全性の観点から、FastCGI は独立したプロセス プールを使用して CGI を実行します。単一のプロセスが停止した場合、システムはそれを簡単に破棄できます。その後、ロジックを実行する新しいプロセスを再割り当てします。

    安全性の観点から、FastCGI はホスト Web サーバーから完全に独立しており、FastCGI は Web サーバーの動作に影響を与えません [PHP-FPM がオフになっている場合] 、502 の不正なゲートウェイがユーザーに返されます]
  1. パフォーマンスの観点から、FastCGI は動的ロジックを変更します。処理は Web サーバーから分離され、負荷の高い IO 処理は引き続きサーバーに残されます。ホストサーバーが IO に集中できるようにするため [通常の動的 Web ページの場合、論理処理の一部のみ、より多くの画像などが存在する可能性があります。静的リソースの読み込み]
  2. #欠点:

高速 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 は結果をユーザーに返す

#図:
PHP の動作モードについて説明します

ISAPI (インターネット サーバー アプリケーション プログラム インターフェイス)

概要:

PHP5 では、3 以降、PHP には ISAPI モードがなくなり、インストール後に php5isapi.dll ファイルはなくなります。 IIS6 で上位バージョンの PHP を使用するには、FastCGI 拡張機能をインストールし、IIS6 が FastCGI をサポートできるようにする必要があります。ですので、ここではあまり紹介しません

#図解:


PHP の動作モードについて説明します

最後に書きます:

現在、インターネットの爆発的な発展に伴い、ほとんどの 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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!