CGI、FastCGI、PHPCGI、PHPFPM的区别

1、CGI

公共网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。不规范说来就是CGI是个协议是个处理器,规定了传递给后方的数据内容以及数据格式。
CGI的不足之处在于CGI的一个进程只能处理一个请求。基本流程就是
请求过来 -> CGI创建一个进程 -> 处理请求 -> 销毁进程
linux下创建进程开销较小,但是初始化的开销较大,CGI每次创建后的初始化都会消耗性能。在此基础上,FastCGI更能有效利用资源。

2、FastCGI

FastCGI的工作原理和CGI一致,都是利用标准输入输出流来处理HTTP等的文本协议。
FastCGI和CGI的不同之处,或者说FastCGI是用来弥补CGI的不足之处,便是在初始化后,启动多个CGI进程来等到请求,到接到请求则发送给其中一个,当空闲时则挂起。当空闲的CGI太多时,也会适当关闭一些。这样就有效提高了效率。
FastCGI的缺点是占用的服务器内存稍大。

3、PHPCGI

PHPCGI是PHP自带的CGI解释器,只能解析不能管理进程。
还有个不足之处是,当更改php.ini配置后,需要重启php-cgi才能生效。

4、PHPFPM

PHP-FPM用来调度PHP-CGI进程的程序,是将FastCGI进程管理整合到PHP包中,也是为了修改php.ini配置文件后可以平滑重启。原理和FastCGI一样,不同之处是PHP-fpm只是针对PHP的Fastcgi进程管理器。

你可能感兴趣的:(CGI、FastCGI、PHPCGI、PHPFPM的区别)