第四弹——CGI&FastCGI

来源:互联网 发布:java边界布局 编辑:程序博客网 时间:2024/06/05 05:59

说到网站的后台,大家都能想到php,jsp等这些比较有名的开发语言,其实c语言也是可以做后台处理程序的。早期的网站是没有后台处理功能的,为了能够实现交互功能,cgi协议就被提出来了,只要满足cgi的固有格式就能够做后台处理。


CGI的不足:

为什么CGI现在没落了,因为PHP,JSP等这些专门用于后台处理的语言诞生了,究其原因,还是CGI自身存有很大的不足导致的。说说它的缺点:

  1. CGI程序的应该答时间很长
  2. CGI不具有升级性
  3. CGI语言不是安全和面向对象的
  4. 每秒支持的击点率不高
  5. 每次请求就会产生一个进程,极大的浪费资源

这些缺点导致它最种没落了,不过不要紧,还有fastcgi,它改善了cgi的不足,效率提高了将近三倍,当然最终要的是没有规定专用的开发语言。


FASTCGI:

引用百科里的一段介绍:

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的 主机上执行并且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI 解释器进程保持在 内存中并因此获得较高的性能。众所周知,CGI 解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在 内存中并接受FastCGI 进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

要用它就肯定要了解它的工作流程啦:

  1. Web Server启动时载入FastCGI进程管理器。
  2. FastCGI进程管理器自身初始化,启动多个CGI解释器进程,并等待来自Web Server的连接。
  3. 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程下。
  4. FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时, 请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

我个人觉得fastcgi还是蛮好用的,运行起来速度超快,好了这篇就简单介绍下,下一篇介绍apache如何配置fastcgi模块。

原创粉丝点击