cgi、fast-cgi和php-fpm介绍

危寒
2023-12-01

一、cgi(Common Gateway Interface、通用网关接口):

       早期的web服务器只能处理html等静态文件,但是随着技术的发展,出现了像java、php等动态语言。 web服务器处理不了,只能交给对应语言的解释器来处理,比如java或php的解释器。但是解释器如何与web服务器进行通信呢?为了解决不同的语言解释器(如java、php解释器)与web服务器通信,于是出现了cgi协议。只要按照cgi协议去编写程序,就能实现各语言解释器与web服务器的通信,比如php-cgi。

二、fast-cgi:

       有了cgi,解决了解释器与web服务器的通信问题,web服务器终于可以处理动态语言了。但是web服务器每收到一个请求,都会fork一个cgi进程,请求结束后再kill掉这个进程。这样有10000个请求,就需要fork、kill php-cgi进程10000次,很浪费资源。于是出现了cgi的改良版本fast-cgi。fast-cgi每次处理完请求后,不会kill掉这个进程,而是保留这个进程,使这个进程可以一次处理多个请求。这样每次就不用重新fork一个进程了,大大提高效率。

三、php-fpm(php-Fastcgi Process Manager):

       php-fpm是php的fast-cgi进程管理器,进程包含master进程和worker进程两种进程。master进程只有一个,负责监听端口,接收来自web服务器的请求,而worker进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 php解释器,是php代码真正执行的地方。

 类似资料: