一文读懂CGI、FastCGI、php |
您所在的位置:网站首页 › 中金rs和CGI的区别 › 一文读懂CGI、FastCGI、php |
一文读懂cgi、fastcgi、php-cgi、php-fpm的区别
CGI诞生之前CGI的诞生CGI程序如何工作Web服务器的内置模块FastCGIphp-fpmphp-cgiphp-cgi与php-fpm的区别
CGI诞生之前
在CGI诞生之前Web服务器负责静态文件的存储、查找及响应,此时的服务器还不能处理php或asp此类文件. CGI的诞生随着人们对于网站的要求越来越高,出现了动态技术. 此时的服务器依然不能直接运行php此类文件,虽然自己没办法识别,却可以将识别的过程交给别的程序完成. 对于服务器与这个程序之间,我们需要一些规则来进行约定,这个约定便是CGI协议. CGI协议是Web服务器与CGI程序之间传递信息的接口标准.,当Web服务器获取到客户端提交的数据后,通过CGI接口转交给CGI程序处理,最后返回给客户. 在上面可以发现CGI协议是一套标准,CGI程序是在服务端的脚本,它可以是任何代码所实现的. CGI程序如何工作 当用户请求Web服务器的动态脚本Web服务器fork出一个新的进程启动CGI程序[启动的过程中需要加载配置、扩展等],将动态脚本交给CGI程序处理.CGI程序启动后解析动态脚本将结果返回Web服务器Web服务器将结果返回客户端,fork的进程关闭可以发现,每次有了动态脚本处理的请求,都需要fork新进程,这种工作方式非常低下. Web服务器的内置模块在后期出现了服务器内置模块(例如:apache的mod_php模块),相比CGI更加高效 它的工作方式 服务器启动,同时启动此模块客户端发来请求,服务器不用fork新进程.可以直接交给此模块处理但是由于是web服务器内置模块,如果更改了程序配置,需要重启Web服务器. FastCGIFastCGI是一种协议,是从CGI标准的基础上发展而来.它的诞生就是为了减轻Web服务器与CGI程序的交互负载,使得服务器可以同时处理更多的请求. FastCGI进程管理器是遵循 FastCGI协议的程序,它只是一类程序 FastCGI进程管理器的工作方式 客户端请求Web服务器的动态脚本服务器将之交给FastCGI主进程FastCGI主进程安排空闲紫禁城解析脚本随后处理结果返回服务器服务器返回客户上面的子进程并不会关闭,而是继续等待主进程分配任务.通过上面可以发现,FastCGI工作效率非常高. php-fpmfpm是FastCGI进程管理器的缩写,所以php-fpm就是php的FastCGI进程管理器 在php5.3之前php-fpm还是个第三方包,5.3之后官方将它集成到源码中 php-fpm可以更好的管理php进程 控制内存 平滑重载等 php-cgi在linux安装好php后,会发现在安装目录下有php与php-cgi文件 windows则是php.exe与php-cgi.exe 它们都能运行php脚本 不同点在于.php是命令模式的php解释器 而php-cgi支持CGI协议的php解释器,同时也支持FastCGI协议 php-cgi与php-fpm的区别可以说php-fpm是php-cgi的改进版,php-cgi以指定的进程工作,而php-fpm可以动态的管理子进程,让子进程处理更多的请求. |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |