phpをインストールするとき、以前はインストールしやすいという理由で常にmod_phpモードを選択していました。 FastCGI モードが気になり、しばらくしてから、mod_php と Fastcgi の選択と比較についての議論を見つけたので、さらに研究するためにメモを残しておきます。
パート 1: Apache での PHP インストール モードの違い: fastcgi と mod_phpfastCgiについて語るときは、Cgiについて語らなければなりません。
CGIの正式な英語名はCommon Gateway Interfaceで、通常は共通ゲートウェイインターフェースと訳されます。HTTPサーバーがマシン上の他のプログラムと通信するためのインターフェースです。この「他のプログラム」は、任意のコンピュータ言語で記述することができ、CGI インターフェイスを介して HTTP サーバーから入力を取得し、実行結果を CGI インターフェイスを介して HTTP サーバーに送信し、HTTP サーバーはその結果をブラウザに送信します。 。
CGI の出現により、WEB は静的から動的に変わりました。Web がますます普及するにつれて、多くの Web サイトは閲覧者と対話するために動的ページを必要とします。 CGI 手法の欠点もますます顕著になってきています。 HTTP は動的ページを生成する必要があるため、システムは CGI プログラムを実行するために新しいプロセスを開始する必要があり、継続的なフォークは非常に時間とリソースを消費します。ここで FastCGI が登場します。
FastCGIに関するBaidu百科事典
2. FastCGI はどのプラットフォームでも使用できます。Netscape Enterprise と IIS には FastCGI モジュールが用意されており、mod_fastcgi は Apache (Apache および Apache から派生したサーバー) でも使用できます。
3. FastCGI は、C/C++、Ruby、Perl、Tcl、Java、Python およびその他のプログラミング言語をサポートしています。
4. FastCGI アプリケーションは CGI とも互換性があります。つまり、FastCGI アプリケーションは CGI としても実行できます。
5. 既存の CGI プログラムを FastCGI に書き直すのは非常に簡単で、少なくとも 3 行のプログラム コードを追加するだけで済みます。
6. FastCGIのデバッグ方法はCGIと同様で、プログラムに必要な環境変数とパラメータを持ち込めば、コマンドラインモードで実行やデバッグが可能です。
7. FastCGI アプリケーションの書き方は CGI と似ていますが、特に注意が必要ないくつかの原則を除けば、FastCGI の書き方は Web サーバー API の学習と比べて大きく異なります。もっとシンプルに。
8. FastCGI は分散コンピューティングをサポートしています。つまり、FastCGI プログラムは Web サイトサーバー以外のホストで実行でき、他の Web サイトサーバーからのリクエストを受け入れることができます。
mod_phpはPHPをAPACHEの組み込みモジュールとして利用するものです。 PHP を解釈するリクエストごとに PHP インタープリタを起動せずに、Apache http サーバー自体が PHP 言語をサポートできるようにします。
その2: mod_phpかfastcgiの性能比較と選択
phpを使用すると、この問題を解決する選択肢が確実に減ります。当然、cgiについて話す必要はありませんが、mod_phpとfastcgiの間ではまだ多くの議論があります。
いくつかの情報を見つけたので、参考までにここに投稿します。
まず第一に、パフォーマンスは誰もが最も懸念する問題であるはずです。mod_php と fastcgi のベンチマークに加えて、Apache と lighthttpd などのサーバーの違いのテストもあります
。
1 mod_php、LightTPD、FastCGI - 何が最速ですか?今回のベックマークの結果は、Apache(prefork)+Fastcgi+phpのパフォーマンスが最も優れているという結果になりました。 apache+mod_phpを超え、lightty+fastcgi+phpをも超えます。もちろん、この結果から得られる値の差は非常に小さいです。さらに、上記のいくつかの結果はすべて APC アクセラレーションを使用しており、APC 使用後はパフォーマンスが 2 倍以上になっています。
2 php4-mod-vs-cgi
このベンチマークはphp4環境で完了しています。 summary.txtの内容は以下の通りです。
-------------------------------------
PHP4モジュール、非常に単純なスクリプト(phpinfo.php):requests/s
プレーン130.04
+turckcache 129.42
+turckcache+zend-optimizer 125.50
PHP4 モジュール、非常に複雑なスクリプト (保険申請): リクエスト/秒
プレーン1.84
+turckcache 6.23
+turckcache+zend-optimizer 5.58
+オプティマイザー1.58
PHP4 CGI、非常に単純なスクリプト(phpinfo.php):requests/s
プレーン22.69
+turckcache 該当なし*
+turckcache+zend-optimizer 該当なし*
+オプティマイザー 21.23
PHP4 CGI、非常に複雑なスクリプト(保険申請): リクエスト/秒
プレーン 2.00
+turckcache 該当なし*
+turckcache+zend-optimizer 該当なし*
+オプティマイザー1.72
* = turkcache は CGI モードでの PHP スクリプトのキャッシュをサポートしていません
上記の結果で注意が必要なのは、主にmod_phpやfastcgiを使って動的ページを生成するため、キャッシュがない場合だと思います。以前のキャッシュには、squid など、より優れた実装ツールが含まれています。したがって、この結果も fastcgi の勝ちであり、その差は大きくありません。
3 http://buytaert.net/drupal-performance?page=1
この記事の結果は上記の2つとは全く逆です。 mod_phpの代わりにfastcgiを使用した後」
から切り替える場合
へ匿名の訪問者では 63% の速度低下が見られ、認証された訪問者では 18% の速度低下が見られます。以下のグラフです
。さらに、以下に示すように、lightty との比較もベンチマークで行われました。
4 最後に、fastcgi 公式の発言を見てみましょう
もちろん、答えはアプリケーションに依存するということです。より完全な答えは、FastCGI が大幅な差で勝つことが多く、大差で負けることはめったにありません。
5 結論は、自分の用途に合わせてテストすれば良いということになります…
最後に個人的な意見です
mod_php と fastcgi のパフォーマンスの差がそれほど大きくない場合は、やはり fastcgi の方が柔軟で、安全で、簡単です。
1 fastcgi を使用すると、Web サーバーを簡単に切り替えることができ、コードを変更することなく、Apache、lightty、ngix などのさまざまなサーバーをテストできます
2 phpを使わずにperlやpythonなどに変更するなど、スクリプトの実装を変更したい場合、Webサーバーに変更は必要ありません
3 つの Web サーバーと fastcgi は別のアカウントで実行できるため、ある程度のセキュリティが分離されます
4 Apache で mod_fastcgi をプログラムするだけの方がはるかに簡単であると言えます。Apache に mod_php をプログラムする場合、問題が発生したときに、それが PHP の問題なのか、Apache の問題なのかを判断するのは困難です。何十回もの関数呼び出しがありますが、まったく手がかりがありません。
http://www.bkjia.com/PHPjc/953966.html