Fast-cgi  cgi  nginx  PHP-fpm 的关系

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

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

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

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

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呢

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

PS:补充一点tomcat

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

这是本人结合网络上的文章和书上的讲解做的一个总结,有不足之处希望大家指正,大家一起学习哈!

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

Fast-cgi cgi nginx php-fpm 的关系 (转的更多相关文章

  1. 深入理解PHP之:Nginx 与 FPM 的工作机制

    网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理 ...

  2. nginx与PHP的关系和交互方式【转】

    nginx与PHP的关系. 对比, apache和PHP的关系, 将PHP安装成apache的一个功能模块, 导致的结果, 对外只有一个apache程序, PHP并不独立出现, 仅仅是apache的模 ...

  3. (转)nginx与PHP的关系

    php是一门编程语言,可以编写很多程序,但是只有php的话,你的php只能在你的服务器里孤立的运行,比如你用php写了一个可以通过身高计算人的标准体重的程序,虽然这个程序可以在服务器运行,但是他还不能 ...

  4. 记录一次自己对nginx+fastcgi(fpm)+mysql压力测试结果

    nginx + fastcgi(fpm) 压力测试: CentOS release 5.9 16核12G内存 静态页面: 并发1000,压测200秒,测试结果: 系统最大负载5.47 成功响应: 25 ...

  5. 转载:2.1 运行中的Nginx进程间的关系《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19624.html 在正式提供服务的产品环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,w ...

  6. Nginx 解析PHP的原理 | CGI、FastCGI及php-fpm的关系

    Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一.PHP+Nginx应运而生的场景.随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大, ...

  7. Nginx解析PHP的原理 | CGI、FastCGI及php-fpm的关系

    Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一.PHP+Nginx应运而生的场景.随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大, ...

  8. 杂谈php之什么是cgi,fastcgi,fpm,cli,mod

    杂谈PHP极少关注的问题 本话题来自于我使用PHP进行网页爬虫的一次经历.对于一个web开发者来说,PHP解释器本身却知之甚小,实在是惭愧呐! 首先这个话题要从几个提问开始. PHP是什么? 外文名: ...

  9. 关于CGI、FastCGI和PHP-FPM的关系

    1.CGI是干嘛的? CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. web server(比如说nginx)只是内容的分发者.比如,如果请求/index.h ...

  10. nginx fastcgi php-fpm的关系梳理

    CGI(Common Gateway Interface)CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具 ...

随机推荐

  1. LeetCode:Pascal's Triangle I II

    LeetCode:Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For examp ...

  2. Linux(10.5-10.11)学习笔记

    3.2程序编码 unix> gcc -01 -o p p1.c p2.c -o用于指定输出(out)文件名. -01,-02 告诉编译器使用第一级或第二级优化 3.2.1机器级代码 机器级编程两 ...

  3. Arduino小车学习与研究博客

    Arduino小车学习与研究博客 信安系统设计基础实践模块 Arduino小车学习与研究 ================== 陈都(20135328) 余佳源(20135321) 莫凡(201352 ...

  4. 删除 windows 下 node_modules 过深的目录

    本文同步自我的个人博客:http://www.52cik.com/2015/11/13/node-modules-del.html 说到 node 的模块,确实既好用又蛋疼.相信无数人吐槽 node_ ...

  5. java并发:获取线程执行结果(Callable、Future、FutureTask)

    初识Callable and Future 在编码时,我们可以通过继承Thread或是实现Runnable接口来创建线程,但是这两种方式都存在一个缺陷:在执行完任务之后无法获取执行结果.如果需要获取执 ...

  6. unity3d 扩展NGUI —— 限制UI点击响应间隔

    当某个按钮按下后给服务器发送某条消息 如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据 不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的bug 所以,限制UI ...

  7. [网站公告]23:00-05:00阿里云SLB升级会造成4-8次每次10秒的闪断

    大家好,阿里云将于今天夜里(7月29日23:00-7月30日05:00)对负载均衡服务(SLB)进行升级操作,升级期间我们使用的SLB实例会有4-8次的闪断,每次闪断时间10秒左右.闪断期间会造成网站 ...

  8. [30分钟]MSSQL快速入门教程

    1.什么是SQL语句 sql语言:结构化的查询语言.(Structured Query Language),是关系数据库管理系统的标准语言. 它是一种解释语言:写一句执行一句,不需要整体编译执行.语法 ...

  9. 自己编写redis客户端[deerlet-redis-client],分享与招募。

    引言 最近工作上有需要使用redis,于是便心血来潮打算自己写一个Java客户端.经过两天的努力,目前该客户端已经基本成型.不过可惜的是,由于redis的命令众多,因此LZ还需要慢慢扩展它去支持更多的 ...

  10. C# 6.0部分新特性

    Struct的默认构造函数和属性赋值 我看C# 6 introduce 提到这个功能.但vs2015搭载的NET4.6貌似还不支持这个.所以也不好判断. 属性赋值 /// <summary> ...