Fast-cgi cgi nginx php-fpm 的关系 (转

Fast-cgi  cgi  nginx  PHP-fpm 的关系php

Fast-cgi是由cgi发展而来,是http服务器(http,nginx等)和动态脚本语言(php,perl等)之间的的通讯接口,只是一个接口而已,他以socket的形式存在(能够是文件socket,也能够是ip socket),能够将http服务器和动态脚本解析服务器分离(两者能够部署在不一样的服务器上),让http服务器专注处理静态请求和转发动态请求到脚本解析服务器;脚本解析服务器则专注处理动态脚本的请求。html

 

Php-fpm:是一个fastcgi进程管理器,也是一个脚本解析服务器java

 

借由一个nginx处理一个php请求来解释几者之间的关系nginx

                                                                                                               

 

 

1.nginx服务器启动时自动载入fastcgi进程管理器tomcat

2.Fastcgi进程管理器(php-fpm)自身初始化,而且启动多个cgi解释进程(php-cgi)并等待来自nginx的链接服务器

3.当nginx服务器收到须要解析php的时,将请求转发到fastcgi接口(socket),fastcgi进程管理器收到请求后选择并链接一个cgi解释器,nginx服务器将cgi环境变量和标准输入发送给cgi解释器(也就是php-cgi)网络

4.FastCGI 子进程(php-cgi)完成处理后将标准输出和错误信息从同一链接返回Web Server。当FastCGI子进程关闭链接时, 请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个链接。 多线程

 

以上是fastcgi处理请求的过程,那么cgi呢socket

上面说了,cgi只是http服务器与动态脚本语言之间的一个通讯端口而已,当他收到来自http服务器的处理请求时,启动脚本解析器来解析。他有很大的缺点,在每次收到来自http服务器的请求时,都要从新启动脚本解析服务器来执行解析(从新加载各类环境变量,配置等等),解析结束后就退出,周而复始,效率十分的低,而fast-cgi至关因而一个常驻与内存当中的cgi在很大程度上提升了服务器的性能php-fpm

 

PS:补充一点tomcat

咱们都知到tomccat实际上是一个servelt,它其实也是一个脚本解析服务器,主要解析Java程序,不一样于php-frm,它采用的是多线程的方式来处理请求,相对而言效率更高且更少的占用系统资源

 

这是本人结合网络上的文章和书上的讲解作的一个总结,有不足之处但愿你们指正,你们一块儿学习哈!

 

关联文章:http://www.cnblogs.com/wanghetao/p/3934350.html

相关文章
相关标签/搜索