CGIって聞いたことありますかね?
最近ではこの仕組みを使わずにWebサーバーのモジュールとして実行する方式が
流行ってますよね?たぶん。
Webプログラマーなら知らないと始まらないPHPなんかがそうですね。
(PHPをCGIとして動作させている風変わりな珍しいサーバーも中にはあるようですが)

さて、このCGIですがCommon Gateway Interfaceのそれぞれの頭文字を取っています。
いやだから頭文字の意味を解説したから何?と、毎回思いますがお決まりなので・・・

ざっくりとCGIについて説明すると
Webサーバーから外部のプログラムを実行して結果を受け取る仕組みです。

ざっくり過ぎてわからん!
例えば"Amakusa"と出力するだけのプログラムがあったとします。
このプログラムを起動すると「Amakusa」と表示されますが
Webサーバー側で起動すると「Amakusa」という出力結果をWebサーバーが受け取り
その結果をブラウザに返します。
ブラウザでは何と表示されるでしょう?

500 Internal Server Error

おい。

なぜエラーになるのかというと、HTTPのヘッダーを出力してないからです。
なのでこのように出力するプログラムを書くといいはずです。
Content-type: text/html

Amakusa
1行空いてますね、これは決まりごとです。
これでブラウザに「Amakusa」と表示されます。

さて、Webサーバーにこのプログラムを実行して!と命令するにはどうすればいいんでしょうか?
簡単です。そのプログラムのURLにブラウザでアクセスするだけです。
http://abcdefg.aaa.jp/xxxx.cgi
のような感じで、この例だとxxxx.cgiがプログラムになります。
CGIの場合は拡張子が主に「cgi」となっている場合が多いです。

このCGIですが、標準入出力ができるプログラミング言語なら何でも作れます。
テキスト処理が多いCGIプログラムではテキスト処理に優れたPerlというスクリプト言語が
多く使われてますが、C言語でもC++でもPHPでも、Linuxなんかのシェルスクリプトでも可能です。

標準入出力について長くなりそうなのでここでは説明しませんw

早い話、CGIプログラムは実行結果をHTTPヘッダーとHTMLで出力してそれを
Webサーバーを経由してブラウザに表示させているだけなんです。

では、CGIでない場合はどうでしょうか?
Webサーバーのモジュールとして実行されるので新しいプロセスを作る必要がないので
起動が早いです。
PHPがこの方式が多いのでPHPの方がPerlより速い!と言ってる人もいますが、
PHPが速いんじゃなくて、動作方式の違いによる差です。
PHPもPerlと同じCGIモードで動かす(またはmod_perlを使うか)と、
たいした速度差なんてないんじゃないの?と思います。

一昔前はCGIと言えばPerlというぐらいPerlがメジャーになってましたが、
今ではPHPの勢いが強そうですね。

私もPerlとPHPを使ってちょっとしたサイトを作った事がありますが、PHPはかなり楽です。
そもそも、Perlと違いWeb用に作られているから当然なんでしょうけど・・・
また、プログラミングの中でも難易度がそんなに高くなく、ホームページが作れるようになって来た
という人も結構とっつきやすいのではないでしょうか。

PerlなんかでCGIプログラムを作成する場合はフォームデータのエンコードやデコードについても
勉強が必要になってきます。(CGI用のモジュールがあるので楽なんですかね?)

なのでWeb技術でサーバーサイドのプログラムを組みたい場合はPHPを勉強するのがオススメです。

本業がプログラマーでない、Web技術素人の日曜プログラマーがエラソーな事書きましたが、
盛大な間違いがあるかもしれませんので気をつけてくださいねw
キーワード: CGI Perl PHP Web
コメント(0件)

 

■コメントを書く
タイトル
本文 *必須
お名前 *必須
メールアドレス
ホームページアドレス
削除パスワード*必須
コメントを削除する際に必要になります。
認証キー *必須 下の画像に表示されている数字をご記入下さい。
(画像は毎回変わります)