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.内容大纲如下: ...
随机推荐
- KAGGLE竟赛
KAGGLE竟赛 关于kaggle的竟赛规则我们勇闯组做出了一些说明,大家可以借鉴一下如何参加kaggle,参加kaggle大赛的一些注意事项,自己参加一些项目,一定会使你的知识量得到质的提升 这是链 ...
- 内网环境上部署k8s+docker集群:集群ftp的yum源配置
接触docker已经有一年了,想把做的时候的一些知识分享给大家. 因为公司机房是内网环境无法连接外网,所以这里所有的部署都是基于内网环境进行的. 首先,需要通过ftp服务制作本地的yum源,可以从ht ...
- 2018-2019-2 20175235 实验二《Java面向对象程序设计》实验报告
实验内容: 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 一.单元测试 1伪代码 百 ...
- nodejs的package.json依赖dependencies中 ^ 和 ~ 的区别
nodejs的package.json定义了一个模块,包括其依赖关系的一个简单的JSON文件,该文件可以包含多个不同的指令来告诉Node包管理器如何处理模块. dependencies则表示此模块依赖 ...
- Centos6.8安装php5.6
检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们, 如: yum remove php.x86_64 php-cli.x86_64 ...
- 逆元知识普及(扫盲篇) —— from Judge
watch out 本文是博主的 csdn 上搬过来的,格式有点崩,看不下去的可以去 博主的 csdn上看(上面 格式会好很多,并且有些公式也用 $\LaTeX$ update 上去了) 最近有点颓 ...
- node命令行工具—cf-cli
音乐分享: 钢心 - <龙王> 初喜<冠军>后喜<龙王> (PS:听一次钢心乐队的演出后采访才知道 “龙王”隐喻的是一起喝酒的老铁....) ——————————— ...
- 洛谷P4774 [NOI2018]屠龙勇士 [扩欧,中国剩余定理]
传送门 思路 首先可以发现打每条龙的攻击值显然是可以提前算出来的,拿multiset模拟一下即可. 一般情况 可以搞出这么一些式子: \[ atk_i\times x=a_i(\text{mod}\ ...
- web---资源的下载及中文乱码问题
1.html网页,超链接交由Servlet处理 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- P1250 种树
P1250 种树 题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1..N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定 ...