「レンタルサーバーのPHPはなんでCGIで動かしてるところが多いんだろ?」と聞かれて答えられなかったので調べたメモ。
PHPを動かす場合、CGIとして動かす方式とApacheのモジュール(mod_php)として動かす方式があります。PHPだけでなくPerlなどもそうですが。
負荷やパフォーマンスの面で見るとモジュール版のほうが負荷は低いのですが、多くのレンタルサーバーはCGIで動かしています。
理由を調べてみると、「小粋空間: PHP における「モジュール版」と「CGI 版」の比較 + WordPress の適用例」にて引用されている「DreamHostのカタチ〜良い鯖.com〜 - PHP」に次のように書かれていました。
ちなみに、中止した理由ですが、Apache module版だと、Dreamhost管理人がユーザごとのPHP負荷を計測するのが不可能なのが原因だそうです。
「CGIとPHP - Land.to非公式QandA」にも次のように書かれています。
mod_phpでは負荷をかけているユーザを特定しにくいため、サーバが重くなったときの対処が難しくなります。新サーバ方式なら誰のプロセスかすぐ特定でき、対処も容易で、サーバ全体への悪影響を最小限にできます。
つまり mod_php だとプロセスは Apache のプロセスになるので、たとえば ps コマンドで表示されるユーザも apache となり、負荷をかけてるユーザの特定がちょっと難しいというのが理由のようです。なるほど。
(追記) はてブのコメントに「局所化」ってのがあった。グローバル変数が他のプロセスから読み込まれる可能性があるとかそういうことかな?
[2010-01-12] RSS フィードの URL が変わりました。お手数ですが RSS リーダーへの再登録をお願いします。
前のエントリー: « 現実離れしたドラマ「メイちゃんの執事」は必見
次のエントリー: CNETの総合フィードって前からブログも入ってたっけ? »
トラックバック
このエントリーのトラックバックURL:
この一覧は、次のエントリーを参照しています: 共用レンタルサーバーのPHPがCGI版で動いている理由:
» [PHP] CGI版が好まれる理由 from よくきたはてダ
つまり mod_php だとプロセスは Apache のプロセスになるので、たとえば ps コマンドで表示されるユーザも apache となり、負荷をか... [詳しくはこちら]
タイトル:
URL:
リンク用HTMLタグ:




