ホームページ  >  記事  >  バックエンド開発  >  PHP の fastcgi と php-fpm についての簡単な説明

PHP の fastcgi と php-fpm についての簡単な説明

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-15 17:27:202895ブラウズ

この記事では、PHP の fastcgi と php-fpm について簡単に紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP の fastcgi と php-fpm についての簡単な説明

PHP 開発について話すとき、必ず fastcgi と php-fpm が挙げられますが、これら 2 つは PHP のパフォーマンスに重要な役割を果たします。 Baidu でのインターン中に ODP 環境は php-fpm でしたが、全く知識がなく、PHP 自体の概念も漠然としていたので、この 2 日間で予定より早く作業が完了しました。この機会に PHP についてさらに学び、PHP について少し深く理解してください。

Web サーバー

Web 開発専用に設計されたサーバー側言語として、PHP は Web サーバーを利用して実装する必要があります。一般的な PHP アーキテクチャには、LAMP とLNMP. 、PHP へのアクセスを説明する図を見つけます。

PHP の fastcgi と php-fpm についての簡単な説明

Apache は PHP リクエストを処理します

mod_php モード

次のことがわかります。リクエストは Apache に送信され、Apache が PHP を解析して処理し、結果をクライアントに返します。 LAMP アーキテクチャを使用する場合、LoadModule を使用して phpx_module (x は PHP のバージョン番号) をロードするように Apache 設定ファイル httpd.conf

加入如下两句
LoadModule phpx_module PHP_ROOT/phpxapache2_2.dllAddType appliaction/x-httpd-php.php
将下面语句做如下修改<IfModule dir_module> DirectoryIndex index.html</IfModule>改为 <IfModule dir_module> DirectoryIndex index.html index.htm index.php index.phtml</IfModule>

を変更する必要があります。 PHP は Apache のサブモジュールとして実行されることがわかり、PHP へのアクセス要求が行われると、Apache は phpx_module を呼び出して PHP コードを解析します。

php_module はどのように PHP コードを解析しますか? - サピ経由。

Apache、PHP、sapi の関係は次のとおりです。

PHP の fastcgi と php-fpm についての簡単な説明

sapi は、ソケットと同様に、外部通信用のインターフェイスを提供する中間層です。 、PHP を作成します。データを取得するために他のアプリケーションと対話できます。 PHP は、Apache および Nginx 用の php_module、IIS 用の ISAPI など、さまざまな sapi を提供します。

Apache が PHP を呼び出す実行プロセス:

Apache -> httpd -> php_module -> sapi -> PHP

つまり、 Web サーバーのパス php_module モードで PHP を解析および実行するモードは mod_php です。

mod_fastcgi モード

PHP の sapi のもう 1 つの方法は、cgi モードを提供することです。現在、cgi は fastcgi に置き換えられています。

いわゆる CGI は共通ゲートウェイ インターフェイスです。Web サーバーがリクエストを受信すると、そのリクエストを CGI プログラム (PHP の fastcgi など) に渡し、CGI がリクエストを処理します (PHP を解析します)。 )、結果を Web サーバーに送信し、Web サーバーはリクエストをクライアントに返します。

CGI の欠点は、各リクエストに起動プロセスと終了プロセスが必要なことです。これは非常に批判されているフォークアンド実行モードであり、同時リクエストが多数の場合に終了します。

fastcgi の誕生により、この欠点は補われ、リクエストの待ちを早めに開始し、リクエストに応答した後は終了せず、次のリクエストを待ち続けるという原理になっています。

fastcgi を使用した実行モードは mod_fastcgi と呼ばれます。

mod_php と mod_fastcgi の違いを比較してください。前者は PHP を Web サーバーのモジュールとして実行し、PHP はサーバーと高度に統合されます。後者は中間プロセスとして fastcgi を使用し、PHP サーバーと Web サーバーはリクエストと応答を完了するためにのみ fastcgi を使用します。

PHP の fastcgi と php-fpm についての簡単な説明

mod_php モード

mod_php モードでは、Apache がリクエストを受け入れるたびに、PHP に接続するプロセスが生成されます。 sapi リクエストの同時実行性が高い場合、明らかにサーバーはそれに耐えることができません。

PHP の fastcgi と php-fpm についての簡単な説明

mod-fastcgi mode

この図からわかるように、リクエストが到着するたびに、httpd は sapi を呼び出します。は PHP に渡され、完了後に終了せず、次のリクエストを待ちます。同時実行パフォーマンスが大幅に向上しました。

php-fpm

これまでの説明はphp-fpmの紹介だけでした。 php-fpm は何をするのですか?実際、これは fastcgi を支援するために使用されます。

fastcgi はプラットフォームや言語に依存しないインターフェイス実装であり、規定の方法に従ってさまざまな言語で実装するだけで、Web サーバーとの通信が完了します。上の図に示されている php-cgi は、PHP に付属の fastcgi マネージャーです。

インターネット上で見られる php-cgi には、主に 2 つの問題があります。

  • php-cgi が php.ini を変更した後、php-cgi を再起動して、 php.ini が有効になり、スムーズに再起動できなくなります。

  • php-cgi を直接強制終了すると、PHP は実行できなくなります。

php-fpm は上記の欠点を完全に解決し、専用の fastcgi マネージャー。

つまり、php-fpm の役割は、PHP で fastcgi を特別に管理することです。これにより、PHP は Web サーバーと安全かつ安定して連携して、高い同時実行性の条件下でリクエスト応答プロセスを完了できます。

推奨学習: php ビデオ チュートリアル

以上がPHP の fastcgi と php-fpm についての簡単な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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