CGI、FastCGI、PHP-FPM联系与区别(理解总结自其他博文)
参考:http://blog.csdn.net/tyrantbear/article/details/52077321
参考: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联系与区别(理解总结自其他博文)的更多相关文章
- cgi fastcgi php-cgi php-fpm
参考: 摘至:http://www.cnblogs.com/thinksasa/p/4497567.html 详说fastcgi,php-fpm的区别:http://segmentfault.co ...
- CGI,FastCGI,PHP-CGI与PHP-FPM区别详解【转】
CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用任何一 ...
- cgi fast-cgi php-fpm区别
php-cli 是php在系统执行的程序,直接执行php文件: cgi和fast-cgi的区别1.cgi和fast-cgi都是php解析协议,负责解析服务器分发过来的php动态文件:cgi程序就会去解 ...
- 转:nginx+CGI/FASTCGI
简介版: 1.fastcgi与cgi区别:fastcgi通过线程来响应请求,而cgi对每个请求生成一个进程. 2.典型nginx数据传输过程:user->nginx->本地socket(请 ...
- CGI FASTCGI php-fpm
CGI(Common Gateway Interface) CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工 ...
- CGI & FastCGI 协议
目录 CGI 是什么 CGI 特点 CGI 的流程 FastCGI 是什么 CGI & FastCGI(转载) 推荐Blog: CGI是什么,FastCGI是什么 CGI 是什么 公共网关接口 ...
- Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
- 漫谈CGI FastCGI WSGI
作者:auxten链接:https://zhuanlan.zhihu.com/p/20054757来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. CGI(Common ...
- PHP-CGI, FastCGI, PHP-FPM的关系和区别
Web server(apache, nginx) 接受到一个php请求后要解析php文件, 怎么解析呢, web server是C语言写的, 所以需要一个协议, 一个php解释器, 也就是CGI. ...
- [转] Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
随机推荐
- Java(20)file i/o
1 I/0: input/output 1.1.java.io.File 1.2 表示:文件或者文件夹(目录) 1.3 File f = new File("文件路径"); 1. ...
- react中根据后台值动态配置
业务中我们要实现对应的数据是1是男,2是女,这就要根据键来进行动态匹配,通常后台来给你一个1或者2,你来进行匹配,这样的数据一般在表格中比较常见. <Card title="Mock- ...
- JavaScript的Document ,Histroy,Location对象
1. Document对象: a) 属性: 名称 描述 alinkColor 设置或检索文档中所有活动链接的颜色 bgColor 设置或检索 Document 对象的背景色 body ...
- vue.nextTick简单的用法
官方文档: 自己写了一个小demo: <template> <div> <p ref="txt" v-if="show">{ ...
- android 给view添加阴影
1.方法一: 使用 CardView 布局 <android.support.v7.widget.CardView xmlns:android="http://schemas.andr ...
- [Kubernetes]谈谈容器跨主机网络
继上篇文章:[Kubernetes]浅谈容器网络,自己给自己挖的坑,这篇文章来谈谈容器跨主机网络. 要理解容器"跨主通信"的原理,就要来谈谈 Flannel 这个项目. Flann ...
- Java基础13-字符串缓冲流;字节流
作业解析 描述HashMap内部实现原理 HashMap是一种存储机制,存储的是key-value对,key用来保证元素的唯一性.通过hash算法将要存储的对象打散,分布在不同的区间中. 当添加对象时 ...
- Spring Cloud 2.x-前言
Spring Cloud Spring Boot 简介 模块介绍 文章列表 简介 微服务已经成为企业开发的标配,阿里的Dubbo已经被企业大规模使用,Spring Cloud作为后起之秀,同时也是 ...
- C++11 double转化为string
C++11转化double为string是一件很容易的事情. 方法: 1:使用C中的sprintf函数,这里就不说了. 2:使用std::ostringstream.这个与std::cout是一样的. ...
- winform倒计时
public partial class Form1 : Form { private int Seconds; public Form1() { InitializeComponent(); // ...