nginx - PHP-CGIの実行プロセスについて質問があるので解決してください。
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-16 17:23:26
0
3
806

php-cgi の使用プロセスに疑問があるので、解決してください。

仮定のシナリオは次のとおりです:
nginx モニター 192.168.1.101:80、php 環境なし
インデックス.php 192.168.1.101::/dev/shm/index.php
php-fpm モニター 192.168.1.102:90000

混乱するのは、実行プロセス中に、index.php が解析されて 192.168.1.101 で実行されるのか、それとも解析および実行のために 192.168.1.102 に送信されるのかということです。詳しいプロセスを説明してくれる専門家はいますか?

1.102 で解析して実行する場合、phar や単一の大きな php ファイルなどの比較的大きなコード パッケージが見つかると、パッケージ全体がまとめて送信されますか?イントラネットのトラフィックがすごいと思いませんか?

曾经蜡笔没有小新
曾经蜡笔没有小新

全員に返信(3)
仅有的幸福

192.168.1.101:80 でリッスンする Nginx は、PHP ファイルに従って、PHP-FPM によって渡されたパラメーター $_SERVER['SCRIPT_FILENAME'] を fastcgi_pass 経由で解析します。 、PHP-FPM 作業プロセス内の PHP インタープリターがスクリプトを実行し、結果を LAN 経由で Nginx に返します。

Nginx と PHP-FPM プロセス間では TCP ネットワーク通信が使用されますが、PHP インタープリターをモジュールとして Apache プロセス (スレッド) に統合する MOD_PHP はまったく異なります。Nginx のアップストリームを通じて、PHP -FPM クラスタリングを簡単に実装できます。そして高可用性。

また:
Apache は、mod_fastcgi モジュールを通じて PHP-FPM とともに使用できます。この場合、Apache は、マルチプロセス、マルチスレッドの epoll イベント駆動型 MPM を使用する、デフォルトの非スレッド MPM を使用することをお勧めします。安全なバージョン。より効率的で安定しています。
Apache は mod_fcgid モジュールを通じて PHP-CGI で使用できます。上記と同じように使用することをお勧めします。 Apache の mod_fastcgi モジュールは、Nginx が提供する fastcgi サポートに似ていることに注意してください。その機能は mod_fcgid とは異なり、mod_fcgid よりも効率的です。これは、mod_fastcgi では PHP-FPM メイン プロセスが管理されるためです。独自の FPM 作業を管理します。

いいねを押す +0
Peter_Zhu

@白一子と @eechen の回答に感謝します。実際、私がこの質問をするときは、マシン 192.168.1.102 に php スクリプトをインストールする必要があるかどうかを知りたいと思っています。以前は主にApacheを使用していて、php-fpmはほとんど使用しなかったので~

環境をセットアップするために 2 つのサーバーを見つけたところですが、おそらく理解できました。

実際、php-fpm は nginx からヘッダー (fastcgi_param) を受信するだけで、SCRIPT_FILENAME を見つけた後、1.102 自身のハードディスクからスクリプトをロードして実行します。これが nginx と php-fpm の間の送信プロセスです。これは単なるヘッダーであり、スクリプトとは何の関係もありません。そして、apache~

のようにヘッダーを通じてphpコードを実行します。

言い換えれば、Apacheの他の高度な機能や内部動作原理に関係なく、nginx + php-fpmとnginx + Apacheの実行プロセスは基本的に同じです~~

いいねを押す +0
仅有的幸福

これは、質問 /q/1010000002753412 ですでに回答しています。フローチャートは私の回答に記載されているので、理解しやすいはずです

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート