目次
PHP-FPM の概要
CGI プロトコルと FastCGI プロトコル
PHP-FPMとは
Nginx と php-fpm の通信メカニズム
Nginx と php-fpm の組み合わせ
ホームページ バックエンド開発 PHPチュートリアル Nginx と php-fpm 間の通信メカニズムについて説明し、その構成方法を見てみましょう。

Nginx と php-fpm 間の通信メカニズムについて説明し、その構成方法を見てみましょう。

Mar 08, 2022 am 10:38 AM
nginx php php-fpm

この記事では、Nginx と php-fpm の間の通信メカニズムについて説明し、2 つの通信方法の違いを紹介し、Nginx と php-fpm の組み合わせを構成する方法を確認し、環境で通信方法を選択する方法を分析します。皆さんのお役に立てれば幸いです!

Nginx と php-fpm 間の通信メカニズムについて説明し、その構成方法を見てみましょう。

PHP-FPM の概要

CGI プロトコルと FastCGI プロトコル

各動的言語 (PHP、Python など) .) コード ファイルがサーバーに認識されるには、対応するパーサーを渡す必要があり、インタプリタとサーバーが相互に通信できるようにするために CGI プロトコルが使用されます。サーバー上の PHP ファイルを解析するには、サーバーが PHP ファイルを解析できるように、PHP インタープリターを対応する CGI プロトコルと組み合わせて使用​​する必要があります。

CGI のメカニズムでは、リクエストごとに CGI プロセスをフォークし、リクエストが完了した後にプロセスを強制終了する必要があるため、実際のアプリケーションではリソースの無駄になります。そのため、CGI の改良版である FastCGI、処理後、プロセスは強制終了されず、複数のリクエストが処理され続けるため、効率が大幅に向上します。

PHP-FPMとは

PHP-FPMはPHP-FastCGI Process Managerであり、FastCGIの実装であり、プロセス管理機能を提供します。プロセスには、マスター プロセスとワーカー プロセスの 2 つのタイプが含まれます。マスター プロセスは 1 つだけあり、ポートをリッスンしてサーバーからリクエストを受信する役割を果たしますが、通常は複数のワーカー プロセスが存在します (特定の数は実際のプロセスに応じて構成されます)。 PHP インタープリターは、コードが実際に実行される場所です。

Nginx と php-fpm の通信メカニズム

Web サイト (www.test.com など) にアクセスすると、処理フローは次のようになります:

  www.test.com
        |
        |
      Nginx
        |
        |
路由到 www.test.com/index.php
        |
        |
加载 nginx 的 fast-cgi 模块
        |
        |
fast-cgi 监听 127.0.0.1:9000 地址
        |
        |
www.test.com/index.php 请求到达 127.0.0.1:9000
        |
        |
     等待处理...

Nginx と php-fpm の組み合わせ

Linux では、nginx と php-fpm 間の通信には 2 つの方法があります: tcp ソケットと unix ソケットです。

tcp ソケットの利点は、サーバーをまたがることができることです。この方法は、nginx と php-fpm が同じマシン上にない場合にのみ使用できます。

Unix ソケットは IPC (プロセス間通信) ソケットとも呼ばれ、同じホスト上でプロセス間通信を実装するために使用されます。この方法では、nginx の php-fpm のソケット ファイルの場所を入力する必要があります。設定ファイル。

2 つの方法のデータ送信プロセスを次の図に示します。

#2 つの違い:

Unix ソケットによるもの ネットワーク プロトコル スタック、パッケージ化とアンパック、チェックサムの計算、シーケンス番号と応答の維持などを行う必要はありません。アプリケーション層のデータをあるプロセスから別のプロセスにコピーするだけです。したがって、その効率は tcp ソケットよりも高く、不必要な tcp オーバーヘッドを削減できます。ただし、同時実行性が高い場合、UNIX ソケットは不安定になります。接続数が爆発的に増えると、大量の長期キャッシュが生成されます。接続指向プロトコルのサポートがないと、大きなデータ パケットがエラーを返さずに直接失敗する可能性があります。例外。 tcp などの接続指向のプロトコルを使用すると、通信の正確さと整合性をより確実に確保できます。

Nginx と php-fpm の組み合わせには、それぞれの設定ファイルでの設定のみが必要です:

1) Nginx での設定

tcp ソケット通信を例に挙げます

server {
    listen       80; #监听 80 端口,接收http请求
    server_name  www.test.com; #就是网站地址
    root /usr/local/etc/nginx/www/huxintong_admin; # 准备存放代码工程的路径
    #路由到网站根目录 www.test.com 时候的处理
    location / {
        index index.php; #跳转到 www.test.com/index.php
        autoindex on;
    }   

    #当请求网站下 php 文件的时候,反向代理到 php-fpm
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi.conf; #加载 nginx 的 fastcgi 模块
        fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000; # tcp 方式,php-fpm 监听的 IP 地址和端口
       # fasrcgi_pass /usr/run/php-fpm.sock # unix socket 连接方式
    }

}

2) php-fpm

listen = 127.0.0.1:9000
# 或者下面这样
listen = /var/run/php-fpm.sock

の設定 Unix ソケットを使用して接続する場合、ソケット ファイルは本質的にファイルであるため、アクセス許可制御の問題が発生することに注意してください。 nginx プロセス php-fpm の権限に問題があります。そうでない場合は、アクセス権限がないことを示すメッセージが表示されます。 (各設定ファイルにユーザーを設定)
上記の設定でphp-fpmとnginx間の通信が完了します。

アプリケーションでの選択

nginx と php-fpm が同じサーバー上で実行されており、同時実行性が高くない (1000 以下) 場合は、nginx との通信効率を向上させるために unix ソケットを選択してください。 php-fpm。

高同時ビジネスに直面している場合は、負荷分散やカーネルの最適化などの運用および保守方法を通じて効率を維持するために、より信頼性の高い tcp ソケットの使用を検討してください。

同時実行性が高くても unix ソケットを使用したい場合は、次の方法で unix ソケットの安定性を向上させることができます。

1) sock ファイルを /dev/shm ディレクトリに配置します。sock ファイルをこのディレクトリのメモリに配置すると、メモリの読み書きが高速になります。

2) バックログを増やす

バックログのデフォルト ビットは 128、1024 です。この値は独自の通常の QPS に変換するのが最適で、構成は次のとおりです。

nginx.conf ファイル

server {
        listen 80 default backlog = 1024;
       }

php-fpm.conf ファイル

listen.backlog = 1024
3) sock ファイルと php-fpm インスタンスを追加します

in/ を作成しますdev/shm に新しい sock ファイルを追加し、nginx の上流モジュールを介して 2 つの sock ファイルへのリクエストを負荷分散し、2 つの sock ファイルを 2 セットの php-fpm インスタンスにマップします。

推奨学習: 「

PHP ビデオ チュートリアル

以上がNginx と php-fpm 間の通信メカニズムについて説明し、その構成方法を見てみましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでコードをコメントします PHPでコードをコメントします Jul 18, 2025 am 04:57 AM

PHPコメントコードには3つの一般的な方法があります。1。//#を使用して1行のコードをブロックすると、//を使用することをお勧めします。 2。使用/.../複数の行でコードブロックをラップするには、ネストすることはできませんが交差することができます。 3. / if(){}を使用するなどの組み合わせスキルコメントロジックブロックを制御するか、エディターショートカットキーで効率を改善するには、シンボルを閉じることに注意を払い、使用時にネストを避ける必要があります。

PHPコメントを書くためのヒント PHPコメントを書くためのヒント Jul 18, 2025 am 04:51 AM

PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統合形式を使用します。 2。JSジャンプを手動で出力する必要がある理由など、ロジックの背後にある理由を強調します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全体的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進します。優れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。

クイックPHPインストールチュートリアル クイックPHPインストールチュートリアル Jul 18, 2025 am 04:52 AM

to installphpquickly、usexampponwindowsorhomebrewonmacos.1.onwindows、downloadandinstallxampp、selectcomponents、startapache、andplacefilesinhtdocs.2

PHPの学習:初心者向けガイド PHPの学習:初心者向けガイド Jul 18, 2025 am 04:54 AM

tolearnphpefctivially、startbysettingupalocalserverenvironmentusingtoolslikexamppandacodeeditorlikevscode.1)instalxamppforapa Che、mysql、andphp.2)useocodeeditorforsyntaxsupport.3)testyoursetup withasimplephpfile.next、Learnpbasicsincludingvariables、ech

コメントで読みやすさを向上させます コメントで読みやすさを向上させます Jul 18, 2025 am 04:46 AM

良いコメントを書くための鍵は、コードの読みやすさを改善するために「何が行われたか」ではなく「なぜ」を説明することです。 1。コメントは、価値の選択や処理の背後にある考慮事項など、論理的な理由を説明する必要があります。 2。複雑なロジックに段落注釈を使用して、関数またはアルゴリズムの全体的な考え方を要約します。 3.コードとの一貫性を確保し、誤解を招くことを避け、必要に応じて時代遅れのコンテンツを削除するために、コメントを定期的に維持します。 4.コードをレビューする際にコメントを同期して確認し、コードコメントの負担を軽減するためにドキュメントを介してパブリックロジックを記録します。

効果的なPHPコメントを書く 効果的なPHPコメントを書く Jul 18, 2025 am 04:44 AM

コメントは、古いインターフェイスとの互換性やサードパーティの制限など、機能ではなくコードの存在の理由を説明したいため、不注意にすることはできません。コメントしなければならない領域には、複雑な条件付き判断、特別なエラー処理ロジック、一時的なバイパス制限が含まれます。コメントを書くためのより実用的な方法は、シーンに基づいてシングルラインのコメントを選択したり、コメントをブロックすることです。ドキュメントブロックコメントを使用して、関数、クラス、ファイルの開始時にパラメーターと返品値を説明し、コメントを更新します。複雑なロジックについては、前のロジックにラインを追加して、全体的な意図を要約できます。同時に、コードを封印するためにコメントを使用しないでください。バージョン制御ツールを使用します。

PHP開発環境のセットアップ PHP開発環境のセットアップ Jul 18, 2025 am 04:55 AM

最初のステップは、統合環境パッケージXAMPPまたはMAMPを選択してローカルサーバーを構築することです。 2番目のステップは、プロジェクトのニーズに応じて適切なPHPバージョンを選択し、複数のバージョンの切り替えを構成することです。 3番目のステップは、editorとしてvscodeまたはphpstormを選択し、xdebugでデバッグすることです。さらに、開発を支援するために、作曲家、PHP_CODESNIFFER、PHPUNIT、およびその他のツールをインストールする必要があります。

良い対悪いPHPコメント 良い対悪いPHPコメント Jul 18, 2025 am 04:55 AM

コードでは、コードがコードの読みやすさとメンテナンスを改善するため、特に多発性および長期のメンテナンスであるPHPのようなプロジェクトでコメントが重要です。コメントを書く理由には、デバッグ時間を節約し、初心者に友好的になり、コミュニケーションコストを削減するために「なぜこれを行うのか」を説明することが含まれます。優れたコメントの表現には、複雑なロジック意図のto-dosまたは潜在的な問題を示す機能またはクラスの役割を説明すること、およびAPIインターフェイスのドキュメントアノテーションの作成が含まれます。悪いコメントの典型的な症状には、コードと矛盾する繰り返しコードコンテンツのコメントや、コメントを使用して悪いコードをカバーし、古い情報を保持することが含まれます。コメントを書くための提案には、コメントを維持するコメントの優先順位付けが含まれます。コードと同期しているコードを統合して、統一された形式を使用して感情的な声明を回避し、コードを理解するのが難しい場合にコメントに依存するのではなく、コードを最適化することを検討します。

See all articles