モジュール版php、cgi版phpとは?

表題の件、私も最近まで知らなかったのですが、
phpには、モジュール版php、cgi版phpという2種類があるようです。

違いについての説明としては、以下サイトが分かりやすかったです。

PHPのCGI版、モジュール版とは… | phpとmysql が使えるおすすめ格安レンタルサーバー比較
http://server-domain.info/word/php-cgi-module.html

CGI版と言われるものは、WebサーバーであるApacheとは別プロセスで動作させるPHPという意味合いが強いです。
実際に、CGIとは、Common Gateway Interfaceの略で、Webサーバーが、Webブラウザからの要求に応じて、プログラムを起動するための仕組みを言います。
つまり、ここでは、

プログラムを起動する=PHPを起動する

という意味となります。

(中略)

逆に、(中略)
モジュール版と言われるものは、WebサーバーであるApacheと同じプロセスで動作させるPHPという意味合いが強いです。

一般に、CGI版PHPとモジュール版PHPでは、どちらが早いかという記事を多くみます。以降の参考記事では、そのあたりがきれいに紹介されています。
ほとんどの場合、モジュール版PHPが動作が速いとされています。

(中略)

しかしながら、レンタルサーバーでは、ほとんどがCGI版PHPが採用されています。
これは、どういう意味があるでしょう。

答えは、上記の動作の仕組みの違いによります。

レンタルサーバーは、いろんな人の寄り合い所帯になっていて、悪意があるなしにかかわらず、PHPなどのスクリプトの暴走などで簡単にシステムが不安定になります。

例えば、モジュール版PHPが動作可能な環境で、あるユーザのPHPスクリプトが暴走しているとしましょう。
そうしたとき、管理者は、CPUの使用率が急激に上がったので対処しようとするでしょう。その時、暴走しているプロセスを停止させることでシステム全体の安定を確保しようと思いますが、モジュール版では、Apacheと同じプロセスとなりますから、Apacheが暴走しているように見えるわけです。
また、さらにApacheは、共有しているすべてのユーザが利用しているものでもありますから、安易にそのプロセスを停止するわけにいきません。

CGI版では、そのような問題を解決してくれます。CGI版は、別のプロセスですから、暴走しているスクリプトがあれば、そのプロセスを停止させれば良いことになります。

このように安定性を確保するためにCGI版を提供しているケースがほとんどのようです。

※大量引用恐縮です。

レンタルサーバで提供されているphpは、
概ねcgi版で動作しているんだそうです。

私は、さくらインターネットを使っているのですが、
このphpの動作はどちらなんでしょうか?

vi03
さくらインターネットの場合、さくらインターネットサーバコントロールパネルの
phpのバージョン選択の項目を選ぶと、
CGI版と明記されていたりするのですぐ分かります。

あとの調べ方としては、php echo phpinfo()の、
Server API の項目をみれば直ぐに分かるみたいですね。

apache で phpのモジュール版とcgi版の切り替えを行ってみる | レンタルサーバー・自宅サーバー設定・構築のヒント
http://server-setting.info/centos/php_cgi_module_exchange.html

CGI版
Server API  : CGI

モジュール版
Server API  : Apache 2.0 Handler
あるいは、
Server API  : Apache

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

CGI版PHPとモジュール版PHPでは、php機能の提供のされ方のしくみが違うため、
他にも様々な違いがあります。

小粋空間: PHP における「モジュール版」と「CGI 版」の比較 + WordPress の適用例
http://www.koikikukan.com/archives/2007/01/29-015501.php
PHPのモジュール版とCGI版の違い
http://xrea-memo.raccy.org/php_diff.xhtml

上記ページあたりで詳しくまとめられていますので
小難しいですが、参考にしてみてくださいませ。

どちらが良いかというのは、一概には言えず、
何を重要視するかによる、といったかんじのようですね。。

まとまりませんが、以上です。

テスト環境:Windows7 Home Premium、さくらインターネットのレンタルサーバ

この記事は役に立ちましたか? 役立った 役立たなかった
0 人中 0 人がこの記事は役に立ったと言っています。

レクタングルWset