プロが教える店舗&オフィスのセキュリティ対策術

perlやPHPは、実装方法にCGIとモジュール版があると聞き、
その性能の比較について調査しております。
モジュール版の長所は負荷が少ない事だと書かれていましたが、
では逆にCGIの利点というものは無いのでしょうか?
もしあるのでしたら、教えていただきたいです。

A 回答 (4件)

CGIというのは Common Gateway Interface の略称で


Webブラウザ(HTTPC)とWebサーバ(HTTPD)との間の通信方式の一種です。
この仕様に従ってさえいれば基本的にはどの言語で開発することも
できますし、環境も問いません(勿論、動作するHTTPD側の環境仕様に
基づきます)。
その気になればCなどでもCGIは作成できます。
(その環境下でコンパイルする必要がありますが)

その代わりに実行する度にメモリ上にロードして終了する度にメモリ
から削除されるので速度は遅く、安定性なども低いとされます。

モジュール版というのは恐らくはApacheサーバでのことですよね。
その場合、サーバソフトウェアはApacheのみに限定されてしまい、
動作自体もApacheに大きく依存します。
(一部、他のサーバ=CGI版と動作が異なる部分がある)

Apacheを使用するなら無難にモジュール版を使用した方がいいとは
思いますが、モジュールが用意されているとは限りません。

因みに、IISにもISAPIという専用のモジュール実行機構があります。
(PerlやPHPなどをISAPIで実行するかCGIとして実行するかを選べます)

参考URL:http://www.studyinghttp.net/cgi,http://ja.wikipe …
    • good
    • 0

しまった、投稿ボタンを押した直後に気づいた。



コンパイル不要言語ではなく、インタプリタ型言語に訂正です。
    • good
    • 0

モジュール:


スピードが速い(起動終了処理が不要)
メモリ使用量が多い(アクセスしていなくてもメモリが解放されない)
rootやapache権限で実行される

CGI:
スピードが遅い(起動終了処理が必要)
メモリ使用量が少ない(アクセスがなければメモリを使用しない)
どんな言語でも作成できる
SuExecを使用できる(ユーザー権限で実行できる)

モジュール版PHPはどちらかというとFast CGIに近いと思います。
Fast CGIはPerlやRuby、PHPなどのコンパイル不要言語で使用するためのモジュールで、起動終了処理を省略して応答速度を短くするための物です。

ざっと見た特徴はこんな感じだと思います。
    • good
    • 0

サーバーが Suexecである場合に限りですが


Unix系OSでのPHPのパーミッションは
CGI= 700で動く
モジュール版= 604以上
と成りますので
## CGI版の場合は 700にしておけば他のユーザーからは中身を見ることが出来ません(rootは別だが)
##モジュール版の場合は 604だとブラウザから直接は無理でも
他のユーザーからFTPや設置したCGIで読み込むことが出来る場合が有ります。

**出来る場合が と言うのは ちょっとややこしいですが例えば
ユーザーtarou がグループ名も tarou
ユーザー hanako がグループ名も hanako の場合

ユーザー tarou の test.php が604 だと hanakoは勿論所有者では有りませんし
グループでも無いのでotherになります
その場合 FTP、コマンドライン、ユーザーhanakoの設置したCGI からは604のファイルを読み込むことが可能です

**一方 ユーザーtarou もhanakoも 同じグループ 例えば usergrp と言うグループである場合は
tarouの604のfileから見て hanakoは同じグループですから 読み込むことは出来ないはずです

ややこしいけど判りました?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!