ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHPチュートリアルのFastCGIとmod_phpの詳細な説明

PHP_PHPチュートリアルのFastCGIとmod_phpの詳細な説明

WBOY
WBOYオリジナル
2016-07-12 09:07:36841ブラウズ

PHPのFastCGIとmod_phpの詳しい説明

インターネット上の FastCGI と mod_php に関する知識は比較的乱雑で包括的ではないため、初心者の便宜のためにここにまとめました。

背景

PHP で最も一般的に使用される方法は、Apache でモジュール (mod_php) として実行することです。これは、Apache が PHP を実行するデフォルトの方法でもありますが、Nginx では PHP-FPM が使用されます。しかし、PHP-FPM とは正確には何ですか? ? phpと何の関係があるのでしょうか?今日は一緒にそれを探ってみましょう。

PHP ハンドラー

最初に覚えておいていただきたいのは、あらゆる種類の Web サーバー (Apache、Nginx など) は、HTML、画像などの静的リソースをユーザーに送信するように設計されているということです。Web サーバー自体は動的スクリプト (PHP、Nginx など) を解釈できません。 Python など) 。

PHP プロセッサは、Web アプリケーション内の PHP コードを解釈し、それを HTML またはその他の静的リソースとして解釈し、解析結果を Web サーバーに渡し、最終的に Web サーバーがそれをユーザーに送信するために使用されます。

ほとんどの Web サーバーは PHP コードを解析できないため、PHP コードを解析できるプログラム、つまり PHP プロセッサが必要です。

Apache と Nginx の両方で PHP コードを処理するには PHP プロセッサが必要であることがわかりました。では、サーバーと PHP プロセッサを接続するにはどうすればよいでしょうか?言い換えれば、サーバーはどのようにして PHP プロセッサと通信するのでしょうか?

その答えは、SAPIServer アプリケーション プログラミング インターフェイス (サーバー側アプリケーション プログラミング ポート) を通じてです。簡単に言うと、SAPI は、PC と同じように、どのオペレーティング システムがインストールされているかに関係なく、特定の PHP アプリケーション用のプログラミング インターフェイスを指します。 PC のインターフェイス仕様 PC 上で PHP スクリプトを正常に実行するには、Web サーバー経由、コマンド ライン直下、または他のプログラムに埋め込むなど、さまざまな方法があります。興味がある場合は、PHP を勉強してください。カーネル。

ここでは、PHP で最も一般的に使用される SAPI によって提供される 2 つの接続方法、mod_php と mod_fastcgi について引き続き説明します。

mod_phpモード

Apache はどのように PHP コードを認識できるのかをおさらいしましょう。 Apache の設定ファイル httpd.conf に次の文を追加または変更する必要がありますか:

リーリー

つまり、php は Apache のサブモジュールとして実行されます。Web 経由で php ファイルにアクセスすると、Apache は php5_module を呼び出して php コードを解析します。

mod_php モジュールをロードするように設定した後、php は Apahce プロセス自体の一部となり、新しい Apache 子プロセスごとにこのモジュールがロードされます。

mod_fastcgi モード

まず、PHP-FPM 公式 Web サイトの手順を見てみましょう:

PHP-FPM - PHP 用のシンプルで堅牢な FastCGI プロセス マネージャー
PHP-FPM (FastCGI Process Manager) は、あらゆる規模のサイト、特に混雑したサイトに役立ついくつかの追加機能を備えた代替 PHP FastCGI 実装です。

PHP-FPM は PHP 用の FastCGI プロセスマネージャーです。これを非常に簡単に説明します。これは、PHP-FPM が mod_fastcgi モードの動作を支援していることを示していますが、FastCGI とは何でしょうか?どのようなプロセスが管理されていますか?

CGIとは何ですか?

CGI(Common Gateway Interface)はWWW技術の中で最も重要な技術の一つであり、かけがえのない重要な位置を占めています。

CGIとは、外部アプリケーション(CGIプログラム)とWebサーバー間のインターフェース規格で、CGIプログラムとWebサーバー間で情報をやり取りするための手順です。

CGI 仕様により、Web サーバーが外部プログラムを実行し、その出力を Web ブラウザーに送信できるようになり、Web の一連の単純な静的ハイパーメディア ドキュメントが完全に新しい対話型メディアに変わります。

端的に言うと、CGI は外部アプリケーション (CGI プログラム) と Web サーバー間のプロトコルであり、サーバーによって渡されるデータが標準形式であることを保証します。

FastCGIとは何ですか?

FastCGI は長寿命 CGI のようなもので、アクティブ化されている限り、毎回フォークするのに時間がかかりません (これは CGI の最も批判的なフォーク実行モデルです)。 )。また、分散コンピューティングもサポートしています。つまり、FastCGI プログラムを Web サイト サーバー以外のホストで実行し、他の Web サイト サーバーからのリクエストを受け入れることができます。

FastCGI は、言語に依存しないスケーラブルなアーキテクチャの CGI オープン拡張機能であり、その主な動作は CGI インタープリター プロセスをメモリ内に保持し、より高いパフォーマンスを実現することです。ご存知のとおり、CGI インタープリタの繰り返しロードが CGI パフォーマンス低下の主な原因です。CGI インタープリタがメモリ内に残り、FastCGI プロセス マネージャーのスケジューリングを受け入れる場合、良好なパフォーマンス、スケーラビリティ、フェイルオーバー機能などが提供されます。

一般に、FastCGI のワークフロー全体は次のようになります:

言い換えれば、FastCGI は CGI のアップグレード版であり、プログラム (PHP、Python、Java など) と Web サーバー (Apache2、Nginx) 間の通信に使用される言語に依存しないプロトコルであり、理論上はどの言語で書かれたプログラムでも通信できます。 FastCGI を渡して Web サービスを提供します。

FastCGI の特徴は、効率を向上させるために複数のリクエストを 1 つのプロセスで完了することです。ほとんどの FastCGI 実装はプロセス プールを維持します。

一般的な説明: FastCGI は事前に起動する必要があり、Web がリクエストを送信するのを待ってそこで実行され、完了後に HTML を生成して PHP に返します。 web ですが、完了後も終了せず、次の Web リクエストを待ち続けます。

PHP-FPM

PHP-FPM は、PHP 用の FastCGI の実装であり、Web サーバーからのリクエストを処理するプロセス プールを管理します。

ただし、PHP-FPM は単なる「PHP FastCGI プロセス マネージャー」であり、PHP インタープリター自体を呼び出してリクエストを処理します。PHP インタープリター (Windows では) は php-cgi.exe です。

結論

ここまで言いましたが、明確に表現できたかわかりませんが、間違っているところがあればご指摘ください。

原文: http://article.gitos.cn/2015/Aurthur/PHP-Mod-PHP-And-Fast-CGI-Explain.html 著者: Aurthur



www.bkjia.com本当http://www.bkjia.com/PHPjc/1059862.html技術記事 PHP の FastCGI と mod_php の詳細説明 FastCGI と mod_php に関するインターネット上での知識は比較的煩雑で網羅的ではないため、初心者向けにここにまとめました。 バックグラウンド PHP が最も一般的に使用されます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。