CGI, FastCGI 理解

来源:互联网 发布:在线p图软件 编辑:程序博客网 时间:2024/05/22 04:55

1. 先了解一下网关的概念:

        HTTP 扩展和接口的发展是由用户需求驱动的。要在 Web 上发布更复杂资源的需求出现时,人们很快就明确了一点:单个应用程序(me+: 比如说nginx服务器)无法处理所有这些能想到的资源。

        为了解决这个问题,开发者提出了网关(gateway)的概念,网关可以作为某种翻译器使用,它抽象出了一种能够到达资源的方法。网关是资源和应用程序(me+: nginx)之间的粘剂。应用程序可以(通过 HTTP 或其他已定义的接口)请求网关来处理某条请求,网关可以提供一条响应。网关可以向数据库发送查询语句,或者生成动态的内容,就像一个门一样:进去一条请求,出来一个响应。

        有些网关会自动将 HTTP 流量转换为其他协议,这样 HTTP 客户端无需了解其他协议,就可以与其他应用程序进行交互了。

 

理解:从用途上大概可以将网关分为两大类,协议网关和资源网关。CGI 和 FastCGI 属于资源网关。资源网关就像一种规范或者说是一组接口,支持这个规范的资源(me+: 比如说PHP程序)就可以被资源网关调用到从而返回数据给服务器(me+: 比如nginx),服务器再将数据返回给用户。

 

2. CGI 和 FastCGI

        第一个流行的应用程序网关 API 就是通用网关接口(Common Gateway Interface,CGI)。CGI 是一个标准接口集,Web 服务器可以用它来装载程序以响应对特定 URL 的 HTTP 请求,并收集程序的输出数据,将其放在 HTTP 响应中回送。(me+: 和上面的理解好像是一样的意思。囧~)

        me+: 所以CGI起到了将服务器和众多资源分离并连接也就是一个中间人的作用,这样的好处是服务器只用管调用CGI就行了,降低了服务器的复杂度,也能防止一些糟糕的资源对它造成的破坏(如果这些资源直接与服务器相连,造成的错误可能会引发服务器溃)。

        但是,这种分离会造成性能的耗费。为每条 CGI 请求引发一个新进程的开销是很高的,会限制那些使用 CGI 的服务器的性能,并且会加重服务端机器资源的负担。为了解决这个问题,人们开发了一种新型 CGI -- 并将其恰当地称为快速 CGI。这个接口模拟了 CGI,但它是作为持久守护进程运行的,消除了为每个请求建立或拆除新进程所带来的性能损耗。

 

参考资料:《HTTP权威指南》

       

        

 
0 0
原创粉丝点击