目次
FastCgi" >FastCgi
php-cgi" >php-cgi
php-fpm" >php-fpm
ホームページ バックエンド開発 PHPチュートリアル cgi、fastcgi、php-cgi、php-fpm切断

cgi、fastcgi、php-cgi、php-fpm切断

Apr 20, 2018 am 10:52 AM
fastcgi php-cgi php-fpm

この記事では、cgi、fastcgi、php-cgi、および php-fpm の分析を紹介します。必要な友人はそれを参照できるようにします。

まず。皆さん、CGI は何のためにあるのでしょうか? CGI は、Web サーバーによって渡されるデータが標準形式であることを保証するもので、これは CGI プログラムの作成者にとって便利です。

Web サーバー (nginx など) は、単なるコンテンツのディストリビューターです。たとえば、/index をリクエストした場合.html とすると、Web サーバーはファイル システム内でこのファイルを見つけてブラウザに送信します。ここで配布されるのは静的データです。さて、現在のリクエストが の場合 /構成ファイルによると、nginx は、これが静的ファイルではなく、PHP パーサーによって処理される必要があることを認識し、リクエストを処理して PHP パーサーに渡します。 Nginx はどのようなデータを PHP パーサーに渡しますか? URL、クエリ文字列、POST データ、HTTP ヘッダーが存在する必要があります。CGI は、どのようなデータをどのような形式で送信するかを規定するプロトコルです。リクエストを処理するバックエンド。 PHP コードで使用するユーザーがどこから来たのかを慎重に考えてください。

Web サーバーが /index.phpこのリクエストの後、対応する CGI プログラムが開始されます。これが PHP パーサーです。次に、PHP パーサーは php.ini ファイルを解析し、実行環境を初期化し、リクエストを処理し、CGI で指定された形式で処理結果を返し、プロセスを終了します。その後、Web サーバーは結果をブラウザーに返します。

/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。

当web server收到/index.phpOK、CGI はプロトコルであり、プロセスなどとは何の関係もありません。では、fastcgi とは何でしょうか? Fastcgi は、CGI プログラムのパフォーマンスを向上させるために使用されます。

パフォーマンスを改善するには、CGI プログラムのパフォーマンス上の問題は何でしょうか? 「PHP パーサーは php.ini ファイルを解析し、実行環境を初期化します。」それだけです。標準 CGI はリクエストごとにこれらの手順を実行するため (疲れる必要はありません。プロセスを開始するのは非常に面倒です!)、毎回の処理時間は比較的長くなります。これは明らかに不合理です!では、Fastcgi はどのようにしてそれを行うのでしょうか?まず、Fastcgi はマスターを起動し、構成ファイルを解析し、実行環境を初期化してから、複数のワーカーを起動します。リクエストが届くと、マスターはそれをワーカーに渡し、すぐに次のリクエストを受け入れることができます。これにより作業の重複が回避され、当然効率が高くなります。また、十分なワーカーがない場合、マスターは構成に従っていくつかのワーカーを事前に開始し、待機することができます。もちろん、アイドル状態のワーカーが多すぎる場合は一部が停止されるため、パフォーマンスが向上し、リソースが節約されます。これがfastcgiのプロセス管理です。

cgicgi

  • 通用网关接口,外部程序与web服务器之间的接口标准,是在cgi程序和web服务器之间传递信息的过程

  • 每一次请求都会生成一个cgi进程,cgi程序执行完,进程退出

  • 独立于服务器、独立编程语言

FastCgi

  • FastCgi 像是一个常驻型的Cgi,它可以一直执行这,只要激活后,不需要每次去fork一次,还支持分布式运算,即FastCgi程序可以在网站服务器以外的主机上执行并且接受来自其他网站服务器的请求

  • 可以同时处理多个请求

  • 长期占用内存

php-cgi

  • php官方自带的FastCGI 进程管理器

  • php.ini修改之后,必须kill掉php-cgi再启动php.ini 才生效。不可以平滑的重启

  • 内存不能动态分配

php-fpm

    外部プログラムと Web サーバー間のインターフェース標準である一般的なゲートウェイ インターフェースは、CGI プログラムと Web サーバーの間にあります。相互に情報を転送するプロセス

  • 各リクエストは CGI プロセスを生成します。CGI プログラムが実行された後、プロセスはサーバーから独立して終了します

  • 。独立したプログラミング言語
  • FastCgi


FastCgi は常駐 Cgi のようなもので、常に実行できます。アクティブ化されている限り、毎回フォークする必要はありません。分散操作もサポートしています。つまり、FastCgi プログラムは Web サイトサーバー以外のホストで実行でき、他の Web サイトサーバーからのリクエストを受け入れることができます

複数のリクエストを同時に処理できます


お久しぶりです


ファミリー:consolas、Menlo、'PingFang SC'、'Microsoft YaHei'、等幅;フォントサイズ:13px;パディング:2px 4px;カラー:rgb(77,77,76);背景:rgb (247,247,247);">php -cgi

🎜🎜php の公式 FastCGI プロセス マネージャー🎜🎜🎜🎜 php.ini を変更した後、それを有効にするには、php-cgi を強制終了してから php.ini を起動する必要があります。スムーズに再起動できません🎜🎜🎜🎜メモリを動的に割り当てることができません🎜🎜🎜🎜php-fpm🎜🎜🎜🎜非公式の fastCgi プロセス マネージャー。後に php5.4 で開始され、現在は正式に含まれています、phpをコンパイルするとき、php-fpm🎜🎜🎜🎜を有効にするために-enable-fpmのみが必要です。これにより、php🎜🎜🎜🎜動的スケジューリングプロセス🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜Ngin xのみ責任を負うリバースプロキシ/リクエスト転送は、php-cgi プロセスの管理を担当しないため、Nginx は通常、作業プロセス (子プロセス) を単独で管理できる php-fpm とともに使用されます。 🎜 php-fpm は、独立した SAPI は php-cgi を管理しません。つまり、php-fpm は php-cgi とは関係がありません。php-fpm のサブプロセスはそれ自体でフォークされます。システム内の php-cgi を削除しても、php-fpm サービスの通常の動作には影響しません。🎜🎜php-fpm は、pm = static 設定の下でバックグラウンドに常駐する作業プロセスを持っています。つまり、5 つの作業プロセス pm.max_children = 5 を設定すると、php-fpm サービスが開始されると、自動的に 5 つの子プロセスがフォークアウトされ、リクエストの処理が完了した後も終了しません。 PHP スクリプトでデータベースを使用する場合、永続接続この時点で、これら 5 つのワーカー プロセスはデータベースへの 5 つの永続接続も確立して維持し、複数のリクエストを処理するときにデータベース接続リソースを再利用し、確立/解放を回避します。リクエストごとにデータベース接続 永続的な接続 タイムアウト後に自動的に再接続することもでき、これは php-fpm のスクリプトに対して完全に透過的です。スクリプトは開始時に永続的な接続の使用を指定するだけです。

php-fpm は、バックグラウンドで常駐する pm = 動的構成 [部分] で動作します。つまり、サービスがビジー状態のときに、より多くのプロセスがフォークされます。一部のプロセスは自動的にシャットダウンされ、メモリがオペレーティング システムに返されます。つまり、PHP-FPM の動作モードは Apache のプリフォーク MPM に似ています。




php-cgi は、PHP によって作成された初期の公式 fastcgi マネージャーです。php.ini を変更すると、スムーズな再起動がサポートされません。有効にするには、元の php-cgi を強制終了して再起動する必要があります。動的ワーカー スケジューリングはサポートされていないため、最初に開始するワーカーの数のみを指定できます。

php-fpm は、5.3.3 で追加されたばかりの fastcgi プロセス マネージャーで、リクエストの圧力の変化に応じてワーカー プロセスの数を動的に増減できる動的スケジューリング機能が追加されており、reload コマンドをサポートしています。現在のリクエストの完了後にワーカー プロセスを再起動し、新しい php.ini 設定を適用できるようにします。





php54 は、php54 より前の関係の一種であり、php54 以降は別の関係です。


php54 より前は、php-fpm (サードパーティのコンパイル) がマネージャー、php-cgi がインタープリターです。

php54 以降は、php-fpm (正式に含まれる)、マスター モードとプール モード。 php-fpm と php-cgi は互いに何の関係もありません。 php-fpm はインタープリターでありマネージャーでもあります

参考 Web サイト https://www.zhihu.com/question/55835080



https://segmentfault.com/q/1010000000256516


関連する推奨事項:

CGI、FastCGI、PHP-FPMの関係図

linux nginx、apache、php、php-fpm、mysqlおよび設定項目が配置されているディレクトリを表示します

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

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

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-fpm を使用して高パフォーマンスのチューニングを行う方法 php-fpm を使用して高パフォーマンスのチューニングを行う方法 Jul 08, 2023 am 11:30 AM

php-fpm を使用して高パフォーマンスのチューニングを行う方法 PHP は、Web アプリケーションや動的 Web サイトの開発に広く使用されている、非常に人気のあるサーバーサイド スクリプト言語です。ただし、トラフィックが増加すると、PHP アプリケーションのパフォーマンスが低下する可能性があります。この問題を解決するには、php-fpm (FastCGIProcessManager) を使用して高性能チューニングを行うことができます。この記事では、php-fpm を使用して PHP アプリケーションのパフォーマンスを向上させる方法とコード例を紹介します。 1つ、

PHP-FPM 最適化を使用して PrestaShop アプリケーションのパフォーマンスを向上させる方法 PHP-FPM 最適化を使用して PrestaShop アプリケーションのパフォーマンスを向上させる方法 Oct 05, 2023 pm 12:33 PM

PHP-FPM 最適化を使用して PrestaShop アプリケーションのパフォーマンスを向上させる方法 電子商取引業界の急速な発展に伴い、PrestaShop は多くの販売者に選ばれる電子商取引プラットフォームになりました。ただし、ストアのサイズが大きくなり、訪問数が増加すると、PrestaShop アプリケーションはパフォーマンスのボトルネックに遭遇する可能性があります。 PrestaShop アプリケーションのパフォーマンスを向上させるための一般的な方法は、PHP-FPM を使用してアプリケーションの処理能力を最適化および向上させることです。 PHP-FPM (高速CGI)

PHP-FPM 最適化を使用して WooCommerce アプリケーションのパフォーマンスを向上させる方法 PHP-FPM 最適化を使用して WooCommerce アプリケーションのパフォーマンスを向上させる方法 Oct 05, 2023 am 08:24 AM

PHP-FPM 最適化を使用して WooCommerce アプリケーションのパフォーマンスを向上させる方法 概要 WooCommerce は、WordPress Web サイトでオンライン ストアを作成および管理するための非常に人気のある e コマース プラグインです。ただし、ストアが成長し、トラフィックが増加すると、WooCommerce アプリが遅くなり、不安定になる可能性があります。この問題を解決するには、PHP-FPM を使用して、WooCommerce アプリケーションのパフォーマンスを最適化および向上させることができます。 PHP-FPとは

php-fpm 接続プールを使用してデータベース アクセスのパフォーマンスを向上させる php-fpm 接続プールを使用してデータベース アクセスのパフォーマンスを向上させる Jul 07, 2023 am 09:24 AM

データベース アクセスのパフォーマンスを向上させるための php-fpm 接続プールの使用の概要: Web 開発において、データベース アクセスは最も頻繁で時間のかかる操作の 1 つです。従来の方法では、データベース操作ごとに新しいデータベース接続を作成し、使用後に接続を閉じます。この方法では、データベース接続の確立と終了が頻繁に発生し、システムのオーバーヘッドが増加します。この問題を解決するには、php-fpm 接続プール テクノロジを使用してデータベース アクセスのパフォーマンスを向上させることができます。接続プールの原理: 接続プールは、一定数のデータベースを組み合わせたキャッシュ技術です。

php-fpmのチューニング方法を詳しく解説 php-fpmのチューニング方法を詳しく解説 Jul 08, 2023 pm 04:31 PM

PHP-FPM は、PHP のパフォーマンスと安定性を向上させるために一般的に使用される PHP プロセス マネージャーです。ただし、高負荷環境では、PHP-FPM のデフォルト設定ではニーズを満たせない場合があるため、チューニングが必要です。この記事では、PHP-FPM のチューニング方法を詳しく紹介し、いくつかのコード例を示します。 1. プロセスの数を増やす デフォルトでは、PHP-FPM はリクエストを処理するために少数のプロセスのみを開始します。高負荷環境では、プロセス数を増やすことで PHP-FPM の同時実行性を高めることができます。

PHP-FPM 最適化を使用して Phalcon アプリケーションのパフォーマンスを向上させる方法 PHP-FPM 最適化を使用して Phalcon アプリケーションのパフォーマンスを向上させる方法 Oct 05, 2023 pm 01:54 PM

PHP-FPM 最適化を使用して Phalcon アプリケーションのパフォーマンスを向上させる方法 はじめに: Phalcon は高性能 PHP フレームワークであり、PHP-FPM と組み合わせるとアプリケーションのパフォーマンスをさらに向上させることができます。この記事では、PHP-FPM を使用して Phalcon アプリケーションのパフォーマンスを最適化する方法を紹介し、具体的なコード例を示します。 1. PHP-FPMPとはHP-FPM (PHPFastCGIProcessManager) はWebサーバーから独立したPHPプロセスです

ubuntuにphp-fpmがない場合の対処法 ubuntuにphp-fpmがない場合の対処法 Feb 03, 2023 am 10:51 AM

php-fpm を使用しない Ubuntu の解決策: 1. 「sudo apt-get」コマンドを実行して PHP のソース アドレスを追加します; 2. php7 パッケージがあるかどうかを確認します; 3. 「sudo apt-get install」を実行して PHP をインストールします" コマンド; 4. nginx リクエストを処理するためにポート 9000 でリッスンするように設定を変更します。 5. 「sudo service php7.2-fpm start」を通じて「php7.2-fpm」を起動します。

php-fpmとは何ですか?パフォーマンスを向上させるために最適化するにはどうすればよいですか? php-fpmとは何ですか?パフォーマンスを向上させるために最適化するにはどうすればよいですか? May 13, 2022 pm 07:56 PM

php-fpmとは何ですか?次の記事では、php-fpm について理解し、php-fpm を最適化する際に何を最適化する必要があるかを紹介します。

See all articles