cgi:通用网关接口。
作用:让网页具有交互功能。
使用场景:HTTP服务器和其他应用程序(php解析器)通信时需要使用。(服务器不能处理php,asp这样的文件,只能外包给其他程序处理)。
工作原理:每当浏览器向服务器发起请求,服务器就请求操作系统生成一个新的CGI解析器进程,进程处理完一个解析后退出,下个请求来时创建一个新进程。
时序图:
fastcgi
定义:一个常驻(long-live)型的CGI(如php-cgi)
特点:它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。
fastCGI的优点:fastCGI采用C/S结构,可以将http服务器和动态脚本解析服务器分离(二者可以部署在不同的服务器上)
工作原理:
- 服务器启动时载入FastCGI进程管理器(如:php-fpm)
- FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
- 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。 Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
- FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时, 请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。