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.内容大纲如下: ...
随机推荐
- windows8.1全角与半角切换快捷键
windows8.1全角与半角切换快捷键: shift + 空格
- Ubuntu 18.04 记录
登录后死机,关机时死机的解决方法 更新内核并安装 Nvidia 显卡驱动可解决. 在内核更新为 4.15.18,Nvidia 显卡驱动为 390 时,问题解决. 使用 LiveCD 启动,然后 mou ...
- 不同IDE对maven项目静态资源处理
今天自己构建maven管理的web项目,参照另一位兄弟的代码,发现他的静态资源,也就是html.js之类的文件是在src/main/resource目录下的,我的在src/main/resource目 ...
- tomcat 8.0安装ssl证书,及centos7.2 的openssl升级到最新版本,及ERR_SSL_OBSOLETE_CIPHER错误解决
openssl官网https://www.openssl.org/source/下载最新的文件 2017-Feb-16 12:03:39 openssl-1.1.0e.tar.gz 安装的时候,可能由 ...
- L1-Day12
1.凡是杀不死你的都会让你变得更强.(什么关系?主语是什么?)[我的翻译]There is no killing you makes you stronger.[标准答案]What doesn’t k ...
- LeetCode第十六题-找出数组中三数之和最接近目标值的答案
3Sum Closest 问题简介: 给定n个整数的数组nums和整数目标,在nums中找到三个整数,使得总和最接近目标,返回三个整数的总和,可以假设每个输入都只有一个解决方案 举例: 给定数组:nu ...
- oracle 计算机改名后监听无法启动
oracle改计算机名后,简单办法是利用oracle自带监听配置重新配置一下,或者修改host.listner.ora.tnsname.ora.我改了没起作用,原来是因为加入了域,计算机名字要全名的.
- kmp算法 模板
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #inclu ...
- PCB载流你必须知道的那些事儿
也许大家都知道铜箔走线宽度与电流大小有关,往往都是硬件工程师让你走多少就走多少,但作为Layout工程师你还是要知道你的铜皮走线取值都由什么因素决定?取值多大才能让你安心? PCB的载流能力取决与以下 ...
- 使用HDFS完成wordcount词频统计
任务需求 统计HDFS上文件的wordcount,并将统计结果输出到HDFS 功能拆解 读取HDFS文件 业务处理(词频统计) 缓存处理结果 将结果输出到HDFS 数据准备 事先往HDFS上传需要进行 ...