1 Cgi
Cgi是一个接口协议,这个协议用户处理动态页面。
如果web使用cgi协议,当web服务器收到一个请求,会fork一个新进程,然后处理用户的请求,处理完之后数据会发送给web服务器,然后web服务器把数据返回给用户,然后这个进程也随时退出。也就是说,如果web服务器使用cgi协议,每次处理用户请求的时候都会创建进程和结束进程,这很浪费时间。
2 Fastcgi
后来出现了fastcgi协议,有了fastcgi协议之后,当web服务器收到一个请求,会fork一个新进程,然后处理用户的请求,处理完之后数据会发送给web服务器,然后web服务器把数据返回给用户,此时这个进程并不会退出,而是继续等待接收请求,这样就提高了web服务器处理动态页面的能力。
3 Php-cgi
PHP-CGI就是PHP实现的自带的FastCGI管理器。也就是说动态请求是由php-cgi处理的。
PHP-CGI只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理。
4 Php-fpm
所以就出现了一些能够调度 php-cgi 进程的程序,比如说由lighthttpd分离出来的spawn-fcgi。同样,PHP-FPM也是用于调度管理PHP解析器php-cgi的管理程序。
Php-fpm是管理php-cgi的。