- 締切済み
perlやPHPについて、CGI方式とモジュール方式の比較
perlやPHPは、実装方法にCGIとモジュール版があると聞き、 その性能の比較について調査しております。 モジュール版の長所は負荷が少ない事だと書かれていましたが、 では逆にCGIの利点というものは無いのでしょうか? もしあるのでしたら、教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- pick52
- ベストアンサー率35% (166/466)
CGIというのは Common Gateway Interface の略称で Webブラウザ(HTTPC)とWebサーバ(HTTPD)との間の通信方式の一種です。 この仕様に従ってさえいれば基本的にはどの言語で開発することも できますし、環境も問いません(勿論、動作するHTTPD側の環境仕様に 基づきます)。 その気になればCなどでもCGIは作成できます。 (その環境下でコンパイルする必要がありますが) その代わりに実行する度にメモリ上にロードして終了する度にメモリ から削除されるので速度は遅く、安定性なども低いとされます。 モジュール版というのは恐らくはApacheサーバでのことですよね。 その場合、サーバソフトウェアはApacheのみに限定されてしまい、 動作自体もApacheに大きく依存します。 (一部、他のサーバ=CGI版と動作が異なる部分がある) Apacheを使用するなら無難にモジュール版を使用した方がいいとは 思いますが、モジュールが用意されているとは限りません。 因みに、IISにもISAPIという専用のモジュール実行機構があります。 (PerlやPHPなどをISAPIで実行するかCGIとして実行するかを選べます)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
しまった、投稿ボタンを押した直後に気づいた。 コンパイル不要言語ではなく、インタプリタ型言語に訂正です。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
モジュール: スピードが速い(起動終了処理が不要) メモリ使用量が多い(アクセスしていなくてもメモリが解放されない) rootやapache権限で実行される CGI: スピードが遅い(起動終了処理が必要) メモリ使用量が少ない(アクセスがなければメモリを使用しない) どんな言語でも作成できる SuExecを使用できる(ユーザー権限で実行できる) モジュール版PHPはどちらかというとFast CGIに近いと思います。 Fast CGIはPerlやRuby、PHPなどのコンパイル不要言語で使用するためのモジュールで、起動終了処理を省略して応答速度を短くするための物です。 ざっと見た特徴はこんな感じだと思います。
- umasikajiro
- ベストアンサー率67% (545/803)
サーバーが 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は同じグループですから 読み込むことは出来ないはずです ややこしいけど判りました?