電子書籍の厳選無料作品が豊富!

CGIの流れというものについて勉強したところ、

サーバがユーザから要求を受けて、
そしてCGIという決まりに従って
外部プログラムを起動し、結果を返してもらい、
またユーザに返す。というものらしいですが…

では、結局のところ、CGIという決まりは
どういう決まりなのでしょうか。
どなたか教えていただけないでしょうか。

A 回答 (6件)

>結局のところ、CGIという決まりはどういう決まりなのでしょうか。



RFC3875という文書で定められています。
http://www.studyinghttp.net/rfc_ja/rfc3875

主要な記述は次の3つの章でしょうか。
  3 スクリプトの呼び出し
  4 CGI リクエスト
  6 CGI レスポンス

この文書に定義されている変数やデータ形式を用いて,要求(request)と応答(response)のやりとりができるのであれば,
そのWebサーバはCGIに対応していると呼ばれますし,
そのサーバ側プログラムはCGIプログラムと呼ばれます。

用いるプログラム言語については規定されていませんから,どんなプログラム言語で書かれていようとRFC3875の仕様を満たすのであればCGIプログラムです。
    • good
    • 0

Apacheで言えばmod_cgi.soを介して呼び出されるシステム。


PerlやC言語などまたPHPもCGIモードで動かせる
逆にPerlもPHPもCGIモードではなくてWebサーバのモジュールとして直接呼び出すことができる。
    • good
    • 0

プログラムの一種です。


テキストの書式を取った形でかつインターネットを主体としています。
よく使われるものの一つはBBS(掲示板)です。
    • good
    • 0

ここで言うサーバとは、ユーザからの要求を受け付けるマシンとしてのサーバもありますが、


具体的にはWEBサーバの事を指しています。

サーバには他にも、認証サーバとかデータベースサーバとか
ファイルサーバとかプロキシサーバなどなどがあります。

WEBサーバ自体には
狭義にはユーザからの要求に対応するHTMLファイルを送り返すという処理しか行いません。
そこで、同じHTMLなんだけれども何かをきっかけに
表示内容を変更する処理が行えるようにすると、
ファイルやデータの管理がやりやすくなる場合があります。

実際、この質問サイトも「質問タイトル、質問内容、回答内容」などのデータを
質問IDをキッカケ(キー)としてデータ管理することで、
見た目の各質問毎のHTML自体は1枚分で処理されています。

その処理を行う言語にPHPやPerlやASP、Javaなどなどがあり
それを広義に「CGI処理部」と呼ぶこともあります。

質問文にある「CGIという決まり」はユーザからの要求に対応した
CGI処理部を呼び出すというWEBサーバの拡張部分の辺りをいうのでしょう。

ただ、そこで具体的に何が行われているのか、どういう設定が絡んでくるのか
といった内容までは知らないので、私からの説明は失礼ながらこの辺りにて。
    • good
    • 0

CGI=Common Gateway Interfaceはクライアントからサーバに対して


リクエスト(要求)が送られたときにサーバがある決まりに従って
プログラムを実行するための仕組みなどのことです。

この決まりに関しては事細かく規定されていますけど、仕様書とか
しっかりみないと分からないでしょうね。
サーバはこの決まり(仕様)に従ってプログラムを実行することによって
CGIを実行できます。

CGIの実行機能はサーバ自体が持っていることもあればサーバの
モジュールや拡張機能として実装されることもあります。

基本的にはそのサーバコンピュータ上で動作するプログラムや
スクリプトであれば言語は問いませんが、サーバプロセス内で
プログラムを実行しているため、プログラム自体の実行スピードや
安定性などに大きく影響を受けます。

言語仕様が簡単で更にすぐに実行できて手軽であり、CGIとして
実行するのにうってつけの機能を標準で実装しているためCGIの
言語としてよくPerlが利用されるため、CGI=Perlと思っている人も
いますがこれは間違いです。
Cなどでコンパイルした実行ファイルやUNIX/Linux系ならシェル、
Winならバッチなどでも作成することは不可能ではありません。
(実用性があるかどうかなどは別の話)

ただ、補足説明なしにCGIといった場合は大抵、Perl CGI(Perlで実装
されたCGI)を指します。
似たような技術にPHP,ASP,JSPなどがあります。
PHPはCGIモードとして動作させることもできます。

参考URL:http://ja.wikipedia.org/wiki/Common_Gateway_Inte …
    • good
    • 0

CGIっていう規則性が無かったらどうデータを受け取るのか判らなくなるんじゃない?


そして返すにもただデータを渡してもだめだから どう返すべきであるかというのを定めて置いた方が良い事になるよね?


jpgという拡張子ならjpeg画像だという規則 と同じ。(実際には中にjpegですよーっていう印が有るんだけど)
それが無かったらそれが何のデータでどう処理するのか 全くわからなくなるでしょ
それを件の受け答えに関して定めた物の事。
    • good
    • 0
この回答へのお礼

なるほど、つまりhttpプロトコルのようなものですか。
ちょっとまた考えてみたいと思います。
ありがとうございました。

お礼日時:2008/08/29 21:01

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