当前位置: 首页 > 后端技术 > PHP

CGI,FASTCGI,PHP-CGI,PHP-FPM概念

时间:2023-03-30 01:27:07 PHP

CGI(CommonGatewayInterFace)既然webserver要把这个请求交给能处理的人,是不是应该告诉他们一些基础知识,他们能看懂的信息?Web服务器会将哪些基本信息传递给后端处理请求的解析器???url,get请求的query_string,POST数据,HttpHeader等,然后CGI指定传递哪些参数,传入什么格式,后端处理完请求后应该传回什么格式。概念:CGI(CommonGatewayInterface)的全称是“CommonGatewayInterface”。CGI可以用任何语言编写,只要该语言具有标准输入、输出和环境变量即可。也就是说,CGI是用来在Web服务器和后端实现CGI协议的程序之间提供一个通信桥梁,降低两者之间的耦合度。缺陷:采用了低效的“FE”模式,即Fork-And-Execute。每次web请求进来后,都会启动一个php程序,处理完请求就退出,浪费资源,请求多的时候服务器会宕机。FastCGI是否有更高效的解决方案?你不能在它完成之前离开吗?这就引出了FastCGI,也可以理解为在CGI协议上增强的一种协议,由原来的“FE”模式演变为“LL”模式,也就是Long-Live模式。操作完成后常驻内存。还有,它是语言无关的,只要你有标准的输入输出和环境变量,那就OK了。FastCGI会先启动一个Master进程,Master进程读取并处理基本配置文件,初始化环境,然后根据配置生成多个worker进程来处理请求。并且worker的数量可以动态调整。PHP-CGIFast-cgi听起来不错,有人用吗?php-cgi是一个实现FastCGI协议的php解释器。缺陷:更改php.ini配置后,需要重启php-cgi进程,正在运行的进程会被kill掉。进程单一,没有进程管理能力,效率极低。PHP-FPM概念:一个实现FastCGI多进程(进程池)管理的管理器。打开后会看到多个php-cgi进程,都是由php-fpm管理的。一些进步:修改配置后,过渡顺利,新的worker进程使用新的配置,正在运行的worker进程在处理完当前请求后自动关闭。多个进程比单个进程更有效。转载来源:http://lib.csdn.net/article/p...