3

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

4

2 回答 2

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/

于 2010-01-29T08:40:42.747 回答
0

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

于 2009-07-15T13:47:57.253 回答