最近、PHPでFastCGIを使用することが提案されました。今私はFastCGIページに行ってそれを読みましたが、その利点が何であるか本当に理解していません。
Mod_phpを使用すると、各ApacheワーカーにPHPインタープリターがロードされます。Apacheは着信要求ごとに1つのワーカープロセスを必要とするため、数百のApacheワーカーが使用され、それぞれ独自のワーカーが使用されます。 PHPインタプリタがロードされ、大量のメモリを消費します。
(注意、これは正確には当てはまりません。Apacheのworker_mpm
を使用すると、単一のスレッド化されたApacheワーカーで多くのリクエストを処理できます。ただし、2009年でさえ、PHP拡張機能でのスレッドの問題が疑われるため、これはPHPをデプロイするための推奨される方法ではありません。)
PHP fast_cgiモードで(lighttpdパッケージの spawn-fcgi のようなものを使用して)を使用する)ことにより、次の利点があります。
FastCGIは、mod_phpとは異なり、phpビットがApacheビットと同じプロセスで実行されていないことを意味します。この分離は、サーバーの再起動または暴走アプリケーションの処理に関して、いくつかの明確な利点があります-mod_phpの場合、それは「暴走」するのはApacheプロセスであることを意味しますが、fastcgiでは、Apacheが話しているプロセスにすぎません。サーバー全体を停止する必要はありません。
まだ言及されていないもう1つの利点は、mod_fcgid
(ApacheでFastCGIを使用するための新しい実装です)とsuexecを使用すると、異なるvhostが異なるLinuxユーザーを使用して実行する設定を実現できます。これは、共有ホスティングシナリオでの真のセキュリティ上の利点になります。
Mod_phpを使用すると、すべてのvhostが同じユーザー(Apacheのユーザー)を共有します。これはセキュリティの問題につながる可能性があります。