【问题标题】:Understanding CGI / FastCGI in Rails了解 Rails 中的 CGI / FastCGI
【发布时间】:2010-11-10 23:49:32
【问题描述】:

这更多是为了了解网络应用程序中的请求-响应机制。客户端向 Web 应用程序发送请求 (GET / POST)。 Web 应用程序有一个正在运行的应用程序服务器,该服务器用作应用程序特定程序的容器。我不明白应用服务器启动 FastCGI / CGI 进程时的部分。 CGI的意义是什么?服务器不是设计来处理完整的请求处理机制吗?请求处理的哪一部分依赖于 CGI?

【问题讨论】:

    标签: cgi web-applications fastcgi


    【解决方案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 进程在内存中保持加载更长时间,以便它可以在加载到内存时处理多个请求。显然,这更有效,因为加载基本 CGI 环境所损失的时间和资源在 FastCGI 进程中从未如此频繁地发生

    有点偏离轨道和 Rails 的具体内容,但这是一篇有趣的文章: http://izumi.plan99.net/blog/index.php/2007/04/05/saving-memory-in-ruby-on-rails/

    【讨论】:

      【解决方案2】:

      客户端(通常是浏览器)和 Web 服务器之间的通信通过http 进行。 当 Web 服务器接收到一个请求时,它会分析请求所要求的内容,并返回相应的输出。请求可以是对存储在磁盘上的文件,然后服务器只返回文件的内容。如果请求标识了一个程序(您的CGI),它将执行它并将您的程序的输出返回给客户端。

      【讨论】:

      • 谢谢丹妮。让我在这里更具体一点。假设我正在为 Rails 应用程序提供服务。客户端请求资源,这是我的程序的特定部分(通常是给控制器对象的消息)。 CGI 在哪里适合?应用服务器(如 mongrel)不应该能够运行程序并将响应返回给客户端吗?
      • 如果您使用的是 mongrel,那么您就不会使用 CGI。
      • 完全正确!。 CGI 是一个术语,指的是由 Web 服务器执行的“控制台应用程序”。 CGI 是 Web 服务器和控制台应用程序之间的通信。使用 mongreal,您的应用程序将在 Web 服务器“内部”运行。
      猜你喜欢
      • 1970-01-01
      • 2013-12-21
      • 2013-05-01
      • 2010-09-18
      • 2011-03-14
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多