2009-07-15 22 views
2

これは、Webアプリケーションのリクエスト/レスポンスメカニズムを理解するためのものです。クライアントはWebアプリケーションにリクエスト(GET/POST)を送信します。 Webアプリケーションには、アプリケーション固有のプログラムのコンテナとして機能するアプリケーションサーバーがあります。私は、アプリケーションサーバーがFastCGI/CGIプロセスを開始するときの部分を理解していません。 CGIの意義は何ですか?完全な要求処理メカニズムを処理するように設計されたサーバーではありませんか?要求処理のどの部分がCGIに依存していますか?CGI/FastCGI in Railsの理解

答えて

1

(それはその後、概念の実装により近いのですが)私はここで問題と類似の質問: HTTP request dispatch from Web Server to a CGI/FastCGI process

は、しかし、ここで私は途中で学ぶことができましたものです: CGIは、「標準のセットですHTTP/Webサーバーと外部プログラムとの通信方法を定義します。標準という言葉に注意してください! HTTPやTCPなどのプロトコルではありませんが、HTML(Ruby、PHP、Pythonなど)を生成する外部プログラムのほとんどが準拠しているため、かなり近いです。

あなたがここにCGIについての詳細を読むことができます: http://hoohoo.ncsa.illinois.edu/cgi/intro.html

、ここに: http://www.w3.org/CGI/

のFastCGIは、CGIプロセスの処理方法の改善である - FastCGIプロセスがロードされたまま、超簡単な方法で入れメモリにロードされている間に複数の要求を処理できるように、より長い時間メモリに格納する必要があります。 http://izumi.plan99.net/blog/index.php/2007/04/05/saving-memory-in-ruby-on-rails/

0

クライアント(基本的にブラウザ)とWebサーバー間の通信はhttpを超えています。 Webサーバーは要求を受け取ると、要求が要求する内容を分析し、適切な出力を返します。要求はディスクに保存されたファイルに存在することができ、サーバーはファイルの内容を返します。要求がプログラム(あなたのCGI)を識別するなら、それはそれを実行し、あなたのプログラムの出力をクライアントに返します。

+0

:FastCGIの中に基本的なCGI環境をロードで失わ&リソースが頻繁にそれを起こりませんでした時間が少しオフトラック

を処理して、特定のレールが、これは面白いarticeあるので、明らかにそれがより効率的に動作しますダニに感謝します。私はここでもう少し具体的にしましょう。私がRailsアプリケーションを提供しているとします。クライアントは、自分のプログラムの特定の部分(通常はコントローラオブジェクトへのメッセージ)であるリソースを要求します。 CGIはどこに収まるの?アプリケーションサーバー(mongrelのような)がプログラムを実行してクライアントに応答を返してはいけませんか? –

+0

mongrelを使用している場合は、CGIを使用しません。 – Quentin

+1

まさに! CGIは、Webサーバーによる「コンソールアプリケーション」の実行を指す用語です。 CGIは、Webサーバーとコンソールアプリケーション間の通信です。 mongrealでは、アプリケーションはWebサーバーの "内部"で実行されます。 –