CGI和FastCGI的区别

CGIFastCGI的区别

CGI是客户每请求一次会启动一个新的CGI解释器进程,然后执行CGI解释器进程获取返回数据,然后把返回数据返回给客户,然后结束CGI解释器进程,效率低,每起一个都会起一个进程CPU

客户请求web服务器->启动CGI解析器->加载配置->链接其他服务器->逻辑处理->返回结果->退出

fastCGI是在web服务器启动的时候就启动了进程,然后在客户请求的时候直接吧内容推给进程,然后返回个客户,最后是等待客户下次请求而不是说退出,与CGI不同的是他不需要单独起也不需要结束进程

Web服务启动时启动进程(启动CGI解析器->加载配置->链接其他的服务)->客户请求web服务器->进入循环(逻辑处理+输出结果)

一般情况下,FastCGI的整个工作流程是这样的:

  1.Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

        2.FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

        3.当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

        4.FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时, 请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

原文地址:https://www.cnblogs.com/L-moye/p/14511496.html