参考:http://blog.csdn.net/tyrantbear/article/details/52077321

参考:http://mp.weixin.qq.com/s?src=11&timestamp=1516087839&ver=639&signature=9Jc*O4eovvZ8KOD37zWO4gBjmV*J-9PpnlLs0bBIzgTIMzbXKTn1Mz6I2L2eke1CaqzgmNW*u3M8bxgWrWQFcrfa7zLX3Mr3l53Q0ih1OIhBqmVoVYQ2IV1YNCEUqyEW&new=1

参考:https://www.zhihu.com/question/19998865?sort=created

参考:http://baike.sogou.com/v9381730.htm?fromTitle=fastcgi

参考:https://technet.microsoft.com/library/hh831548.aspx

浏览器通过http协议请求到Web Server,Web Server解析这个请求,然后把这个请求的各种参数写进进程的环境变量中,比如请求方法,源路径等。接下来,web服务器就会通过CGI协议调用对应的应用程序。

CGI(Common Gateway Interface):Web Server(如Appache,IIS,Nginx,Tomcat等服务器)与 Web Application(如php,java,asp.net等应用程序)之间的通信协议,规定要传什么数据、以什么格式传。与具体的实现语言无关。使用CGI协议的应用程序叫做CGI程序。

FastCGI(Fast Common Gateway Interface):同CGI,是服务器与应用程序之间的通信协议,还规定了最大Instances,实力最大请求 等。使用FastCGI协议的应用程序叫做FastCGI程序。与CGI的区别是:FastCGI程序的性能比CGI程序高。

PHP-CGI就是php实现CGI协议的接口程序,可以称为CGI程序。是PHP的解释器。

PHP-FPM就是php实现FastCGI协议的接口程序,可以称为FastCGI程序。只有Linux系统会使用PHP-FPM,Windows系统只会使用PHP-CGI.

FastCGI程序的性能比CGI程序高 的 原因(拿php举例):

场景模拟:当web服务器接收到 /index.php请求后,会启用对应的CGI程序,这里即对应PHP-CGI,接下来PHP-CGI会解析php.ini文件,初始化执行环境,然后处理请求,再按照CGI规定的格式返回处理后的结果,最后退出进程。Web服务器在将结果返回给浏览器。

性能拖累点:每个启动的PHP-CGI都会解析php.ini文件,初始化执行环境。即每次都启动一个新进程。

FastCGI程序的应对措施:先启动一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时master会传递给一个worker,然后立刻接收下一个请求。当worker不够用时,master可以根据配置预先启动几个worker。当空闲worker太多时,master可以根据配置停掉一些,这样就提高了性能,节约了资源。这就是FastCGI对进程的管理。

Php-fpm诞生的另一个原因是:当修改了php.ini配置文件后,php-cgi进程不能平滑重启。Php-fpm对应的处理机制是新的worker用新的配置,已经存在的worker处理完手上的活就停止了。

SAPI(Server Application Programming Interface),服务器应用编程接口

参考:http://blog.csdn.net/fangru/article/details/9137079

解耦web服务器与web应用程序,类似socket。如果没有这一层,那么web服务器直接与web应用程序通信,如果加上这层,则web服务器与SAPI通信,SAPI与web应用程序通信。

CGI、FastCGI、PHP-FPM联系与区别(理解总结自其他博文)的更多相关文章

  1. cgi fastcgi php-cgi php-fpm

      参考: 摘至:http://www.cnblogs.com/thinksasa/p/4497567.html 详说fastcgi,php-fpm的区别:http://segmentfault.co ...

  2. CGI,FastCGI,PHP-CGI与PHP-FPM区别详解【转】

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

  3. cgi fast-cgi php-fpm区别

    php-cli 是php在系统执行的程序,直接执行php文件: cgi和fast-cgi的区别1.cgi和fast-cgi都是php解析协议,负责解析服务器分发过来的php动态文件:cgi程序就会去解 ...

  4. 转:nginx+CGI/FASTCGI

    简介版: 1.fastcgi与cgi区别:fastcgi通过线程来响应请求,而cgi对每个请求生成一个进程. 2.典型nginx数据传输过程:user->nginx->本地socket(请 ...

  5. CGI FASTCGI php-fpm

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

  6. CGI & FastCGI 协议

    目录 CGI 是什么 CGI 特点 CGI 的流程 FastCGI 是什么 CGI & FastCGI(转载) 推荐Blog: CGI是什么,FastCGI是什么 CGI 是什么 公共网关接口 ...

  7. Nginx + CGI/FastCGI + C/Cpp

    接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...

  8. 漫谈CGI FastCGI WSGI

    作者:auxten链接:https://zhuanlan.zhihu.com/p/20054757来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. CGI(Common ...

  9. PHP-CGI, FastCGI, PHP-FPM的关系和区别

    Web server(apache, nginx) 接受到一个php请求后要解析php文件, 怎么解析呢, web server是C语言写的, 所以需要一个协议, 一个php解释器, 也就是CGI. ...

  10. [转] Nginx + CGI/FastCGI + C/Cpp

    接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...

随机推荐

  1. Android AVD启动报错:emulator: ERROR: x86_64 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable.

    打开Android SDK manager查看安装发现HAXM在windows上无法安装 可以去 http://www.androiddevtools.cn/index.html 下载 Android ...

  2. winform 以不规则图形背景显示窗体

    一:创建一个winform窗体,把BackgroundImage引入一个不规则的图片,设置属性BackgroundImageLayout为Stretch 二:主要代码 using System; us ...

  3. ueditor接入秀米编辑器

    秀米编辑器用来编辑微信页面很方便,功能也比较强大.秀米提供了第三方编辑器接入的功能,接入方法可以参照官网示例:http://hgs.xiumi.us/uedit/ 但是这里有几点要注意: 1. 示例中 ...

  4. L1-Day14

    今天是周日,不用交作业,但是需要把这一周的知识点复习总结 做个思维导图吧

  5. python日志重复输出

    ​ 在学习了python的函数式编程后,又接触到了logging这样一个强大的日志模块.为了减少重复代码,应该不少同学和我一样便迫不及待的写了一个自己的日志函数,比如下面这样: # 这里为了便于理解, ...

  6. AXI_DMA IP学习

    参考:PG201  AXI DMA v7.1    AXI IP核 功能:一旦处理器配置好传输方式之后,DMA可以自己完成内存数据的搬进或者搬出,而不需要处理器的介入.如果使用方法得当,DMA可以显著 ...

  7. CentOS 7.2 Ubuntu 18部署Rsync + Lsyncd服务实现文件实时同步/备份

    发送端配置: 一.配置密钥 1. 主/从服务器之间启用基于密钥的身份验证.登录发送端服务器并用 " ssh-keygen " 命令生成公共或私有的密钥. 2. 使用 " ...

  8. zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控

    zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控 前端nginx虚拟主机引用后端多个php接口,为了方便监控,将后端服务器集中配置在nginx中,具体配置如下: [roo ...

  9. VMware对虚拟机快照进行克隆

    1.在关机状态下做一个快照 2.把快照管理器打开 3.右键快照,选择“克隆此快照” 4.选择要克隆的快照 5.选择克隆的方式 6.设置名称及保存的位置 注:虚拟机的快照是开机状态,不能对快照进行克隆

  10. python 对Excel表格的读取

    import xlrd flbrd = "D:\\考勤系统.xlsx" ws = xlrd.open_workbook(flbrd) # 获取所有sheet名字:ws.sheet_ ...