web-dev-qa-db-ja.com

PHP:mod_phpに対するFastCGIの利点は何ですか?

最近、PHPでFastCGIを使用することが提案されました。今私はFastCGIページに行ってそれを読みましたが、その利点が何であるか本当に理解していません。

30
cletus

Mod_phpを使用すると、各ApacheワーカーにPHPインタープリターがロードされます。Apacheは着信要求ごとに1つのワーカープロセスを必要とするため、数百のApacheワーカーが使用され、それぞれ独自のワーカーが使用されます。 PHPインタプリタがロードされ、大量のメモリを消費します。

(注意、これは正確には当てはまりません。Apacheのworker_mpmを使用すると、単一のスレッド化されたApacheワーカーで多くのリクエストを処理できます。ただし、2009年でさえ、PHP拡張機能でのスレッドの問題が疑われるため、これはPHPをデプロイするための推奨される方法ではありません。)

PHP fast_cgiモードで(lighttpdパッケージの spawn-fcgi のようなものを使用して)を使用する)ことにより、次の利点があります。

  • 着信接続の数とは別に、PHPワーカーの数を調整します
  • PHPワーカーを別のサーバーに配置するか、Web層を変更せずに多くのサーバーに拡張できます
  • nginx 、または lighttpd のような別のWebサーバーを選択する柔軟性を提供します
  • PHPアプリケーションをWebサーバー上の別のセキュリティドメインで実行できるようにする
37
Dave Cheney

FastCGIは、mod_phpとは異なり、phpビットがApacheビットと同じプロセスで実行されていないことを意味します。この分離は、サーバーの再起動または暴走アプリケーションの処理に関して、いくつかの明確な利点があります-mod_phpの場合、それは「暴走」するのはApacheプロセスであることを意味しますが、fastcgiでは、Apacheが話しているプロセスにすぎません。サーバー全体を停止する必要はありません。

5
pjz

まだ言及されていないもう1つの利点は、mod_fcgid(ApacheでFastCGIを使用するための新しい実装です)とsuexecを使用すると、異なるvhostが異なるLinuxユーザーを使用して実行する設定を実現できます。これは、共有ホスティングシナリオでの真のセキュリティ上の利点になります。

Mod_phpを使用すると、すべてのvhostが同じユーザー(Apacheのユーザー)を共有します。これはセキュリティの問題につながる可能性があります。

4
Martin C.