- ベストアンサー
CGIとPHPの違いってなんですか?
プログラミング初心者です。初歩的な質問で申し訳ありません。初心者向けの書籍等で調べてみると掲示板の作成やカウンター設置等CGIでできることはPHPでもできてPHPでできることはCGIでも同じことができるようなイメージなのですが、逆にそれぞれがそれぞれのプログラムじゃないとできない、ということや特徴的な使用方法等わかりやすく教えていただけたら助かります。よろしくお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
ANo.5 ですが一部わかりにくいかもしれないので補足します。 「PHPはCGIより速い」は間違いですが、それ以前に比較対照がおかしいと言えます。 それとは別に「PHPはperlより速い」というのもありますが、これも間違いです。 PHPもperlも、それぞれ「CGIモード」と「modモード」があり、modモードはCGIモードよりも速いです。ANo.5 に書いたようにCGIとはプログラムとWebサーバーを橋渡しする環境のことで、modはWebサーバーの一部として組み込まれて動きます。当然「橋渡し」の分、時間がかかります。 たとえば、CGIでPHPを動かすよりも、modでperlを動かしたほうが圧倒的に速いです。 で、モードを同じにした場合は、perlのほうが速いケースが多いそうですが、大差はないという見方もあります。 おそらく、PHPはmodモード(モジュール)で動作させることが多いのと、CGIはperlだと思ってしまっている人が多いことで、先のような間違った情報が広まってしまったのでしょうね。 そのあたり、氾濫する情報にまどわされてしまうこともあるので、まずはPHP、perl本家のサイトを見るのが良いと思います。動作モードについても詳しく書かれています。もちろん信頼性も最も高いでしょう。
その他の回答 (9)
- taseki
- ベストアンサー率66% (155/233)
graphaffineさんに横槍を入れるようで恐縮ですが、 「PHPがASを指す」ということはありませんので、ご注意を(「AS」がサーバーモジュールを指すなら)。 私が下に書いたように、CGIは実行形態・環境を指しますが、PHPは単に言語を指すものです。 PHPもCGIで動きますし、モジュールでも動きます。それはperlも同じです。 「CGIとPHPの違いってなんですか?」 というご質問は、ある実行環境そのものと、言語(実行環境を問わない)を比べるようなことで、言ってみれば 「ウィンドウズとエクセルの違いってなんですか?」 に近いようなもの(ちょっと無理があるかも)。 エクセルにはマック版もあり、そもそもカテゴリ違いなので関連する性能差は比較できません。 なので、単に言葉が指す意味の違いでしかないと思います。 回答としては、 「CGIは、プログラム実行環境のことで、 PHPは、そのCGI上やモジュールで動かすプログラム言語のこと」 となるのかな。 なんとなくlunamariaさんはCGIとperlを取り違えている気がしますが…、わかりません。
- graphaffine
- ベストアンサー率23% (55/232)
lunamariaさん、今晩は。 先ほどはASとそうでないものとの実行形態上の比較でしたが、別の観点での比較も付け加えさせてもらいます。 なお、lunamariaさんのレベルがわかりませんがある程度の専門用語を説明なしで使わせてもらいますがあしからずご了承ください。 将来性の比較 個人で開設した小規模なサイトは別として、業務用のある程度複雑なサイトではCGIは時代遅れであり、大部分はASにて開発、運用が行われるようになる。 理由1 CGIはOSに多大な負担をかけ、実行の効率が低い。実際例えば100個のリクエストがきたとき、CGIの場合はOSが100個のプロセスをアタッチするが、ASの場合その100個はASのプロセスのサブプロセスになり、リクエストの多少によらずプロセス数は変わらない。 理由2 ASでの開発はCGIの開発より効率がよい。何故なら、DB処理などの基本機能がASに装備されていることやスクリプト(簡易言語)という名のとおり、CGIを開発する一般のプログラミング言語より覚えやすく使いやすいのがその理由である。
- graphaffine
- ベストアンサー率23% (55/232)
CGIとPHPの違いを一言で言えば、アプリケーションサーバー(以下、ASと略す)であるか否かということになります。PHPがASでCGIはそうではありません。 CGI、PHPともにWebサーバーから呼び出されHTMLを返すという点では同じです。 違いは実行形態にあります。 CGIは一般的には実行形式ファイル(Windowsで言う拡張子exeのファイル)でありサーバーOSの元で稼動します。この場合、言語は無関係になります。 ASの場合、通常はそのASに応じたスクリプト言語があり、その言語で書かれたプログラムをASのスクリプトエンジンが解釈実行します。 ASとしては、PHP以外にColdFusionやASP.NETなどが有名です。 なお、蛇足ながら付け加えるとアプリケーションサーバーは本来はより広い意味の言葉であり、今述べたのは正確にはWebアプリケーションサーバーと言う事になりますが、実際問題としてはアプリケーションサーバーとはWebアプリケーションサーバーのことを指すことが多いようです。 かなり回りくどくなってしまいましたが、こんなところでよろしいでしょうか。
- to-zoku
- ベストアンサー率36% (16/44)
「Perlプログラミング中毒!―実用&趣味的Perlモジュール・リファレンス 」 と言う本を少し読んだだけなのですが、最新のPerlはWin32APIが使え、windows側にアクセスできるってことかなー? ディスクトップにショートカットを作るとか?? これはPHPには、できないかもしれません。 HPに関しては、Perlでできる事はPHPでもできるし、PHPの方が簡単なものも多い。 とりあえず、特殊な事をしなければ、掲示板、カウンター等は同様にできますよ。 Perlの方がまだ経験が長いですが、PHPでスクリプトを作っていて困った事はありません。
- taseki
- ベストアンサー率66% (155/233)
「PHPはCGIより速い」は間違いです。 たとえばC言語で書いたCGIなら同等かそれ以上になる場合も多いでしょう。 ちなみにCGIは言語ではありませんので、使う言語次第で「何でもできる」と言えます(語弊があるかもしれませんが)。 仕組みという意味では、CGIとはプログラムとWebサーバーを橋渡しする環境を指します。PHPは言わばWebサーバーに埋め込まれたプログラム環境と言えます。 そして、CGIで多く使われる言語にperlがあり、CGIの代表的存在であるために「perlはCGIで動作する」と思いこまれる向きもありますが、実はperlにも「CGIモード」と、PHPと同じような動作方法(CGIを介さずWebサーバーに埋め込まれた状態で動作)である「mod_perl」があります。これは言ってみれば、それこそPHPと言語が違うだけの状態です(どちらのモードなのかはサーバーへの実装による)。 それらを踏まえ、CGIは柔軟性や可能性・拡張性という意味で、いろいろなことをやりたい場合に強いと言えますし、PHPは初心者には記法が大変覚えやすくDBなどの操作も簡単に記述できる利点があります。
#1の方が回答されているようにPHP のほうが動作が速いとされています。 そして、PHPとCGI(Perl)を使ってきた私の視点で言いますと、 Webページにちょっとだけちょっとした処理を追加したい場合、 選択肢はPHPだと思います。 PHPだとJavaScriptのようにHTMLの中に書き込めます。 ちょっとした処理だけなら楽です。 Perlだとそのちょっとだけを作るのにすべてを関数を使って出力しなければいけない。 などからです。 悪い点は、 まだつかえるサーバーが少ない。 まだまだ発展途上(私の中で) 一方Perlの利点は、 フリーで配布されているスクリプトが多い。 たいていのサーバーで動作が保障されている。 テキスト処理においては右に出るものはいないといわれている。 悪い点は、 アクセス数が多いとサーバーに負荷がかかる。 ちなみにどちらもつくろうと思えばメモ帳でできます。
- deputy
- ベストアンサー率46% (99/212)
CGIといった場合は、広範囲になります。 CGI(Common Gateway Interfaceの略)は、サーバとページが連携する仕組み、(具体的にはサーバでプログラムを動かして)という感じのことです。 なので、プログラミング言語は問わないので、広義ではPHPもそこにCGIに入るはずです。たしか。 もちろん、perl、そして、C/C++やrubyも入るはずだと。。 一般的に掲示板の設置をされる場合でいわれる「CGI」は、perlで書かれたプログラムのことですよね。 perlに対して、PHPは、ページ(HTML)内に記入して呼び出せるし、データベースに合わせられる部分が有ると思います。 lunamariaさんの何れの疑問についても、ここのページに詳しいと思いますので、はっておきますね。 http://www.scollabo.com/banban/cgi/cgi_003.html
- mendokusa
- ベストアンサー率13% (359/2726)
PHPはデータベースとの連携に使用する と言うイメージが強いですね。
- sheltie
- ベストアンサー率52% (280/529)
一般的にPHPのほうがCGIよりも処理が早いと言われています。 どちらの言語を選択しても、プログラムとして「○○の機能が実現できない」 というようなことはほとんどないかと思います。 詳細については下記のページを参考にされると良いと思います。