2019独角兽企业重金招聘Python工程师标准>>>

首先,CGI是干嘛的?

CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。

web server(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么web server会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配置文件,nginx知道这个不是静态文件,需要去找PHP解析器来处理,那么他会把这个请求简单处理后交给PHP解析器。Nginx会传哪些数据给PHP解析器呢?url要有吧,查询字符串也得有吧,POST数据也要有,HTTP header不能少吧,好的,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。仔细想想,你在PHP代码中使用的用户从哪里来的。

当web server收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。CGI是个协议,跟进程什么的没关系。

那fastcgi又是什么呢?

Fastcgi是用来提高CGI程序性能的。

提高性能,那么CGI程序的性能问题在哪呢?"PHP解析器会解析php.ini文件,初始化执行环境",就是这里了。标准的CGI对每个请求都会执行这些步骤(不闲累啊!启动进程很累的说!),所以处理每个时间的时间会比较长。这明显不合理嘛!那么Fastcgi是怎么做的呢?首先,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。

那PHP-FPM又是什么呢?

是一个实现了Fastcgi的程序,被PHP官方收了。

大家都知道,PHP的解释器是php-cgi。php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理(皇上,臣妾真的做不到啊!)所以就出现了一些能够调度php-cgi进程的程序,比如说由lighthttpd分离出来的spawn-fcgi。好了PHP-FPM也是这么个东东,在长时间的发展后,逐渐得到了大家的认可(要知道,前几年大家可是抱怨PHP-FPM稳定性太差的),也越来越流行。

好了,最后来回来你的问题。 网上有的说,fastcgi是一个协议,php-fpm实现了这个协议

转载于:https://my.oschina.net/famoustone/blog/831927

什么是CGI 什么是 FastCGI 什么是 php-fpm相关推荐

  1. IIS7入门之旅:(3)CGI application和FastCGI application的区别

    前言: 一如既往地,IIS支持通过提供pluggable module来提供对第3方script的支持,例如php等.在IIS7中,对于CGI的支持有了一个新的变化,就是同时提供了2种CGI支持模块, ...

  2. php的cgi的设置,apache中配置php支持模块模式、cgi模式和fastcgi模式

    首先安装apache.mysql和php,依次顺序安装. 1.apache.mysql的安装比较简单,略过 2. php的安装,我安装的是php5.3.6内置了php-fpm,所以不需要再单独下补丁了 ...

  3. php fast cgi nginx,通过fast-cgi连接php-fpm和nginx之间的连接是持久的(保持活动)连接吗?...

    一年后,我问了这个问题,我似乎找到了答案. (gdb) bt #0 close () at ../sysdeps/unix/syscall-template.S:84 #1 0x0000000000a ...

  4. php fast cgi nginx,通过fast-cgi连接php-fpm和nginx之间的连接是持...

    PHP-FPM是fastCGI协议的一种实现,因此它遵守所有fastCGI规范要求. The Web server controls the lifetime of transport connect ...

  5. cgi,fastcgi,php-cgi,php-fpm之间的关系

    参考文章: https://segmentfault.com/q/1010000000256516 http://www.thinkphp.cn/topic/42338.html 这篇文章写的挺好:h ...

  6. CGI,FastCGI,PHP-CGI,PHP-FPM

    CGI 简介 CGI全称是"通用网关接口"(Common Gateway Interface),它可以让一个客户端,从网页浏览器向执行在Web服务器上的程序请求数据. CGI描述了 ...

  7. cgi web 调用多次启动_全面了解CGI、FastCGI、PHPFPM

    一.抛个砖 1.Web Server传递数据的方法 正式说CGI之前,先来了解一下Web Server传递数据的另外一种方法:PHP Module加载方式.相信都会想起Apache吧,初学php时,在 ...

  8. 彻底明白php中cgi、fastcgi和php-cgi、php-fpm及php运行原理

    目录 1.CGI 2.FastCGI 3.PHP-CGI 4.PHP-FPM 5.PHP运行原理 1)mod_php模式 2)mod_fastcgi 模式 3)总结: 1.CGI 最早的Web服务器只 ...

  9. CGI跟FASTCGI区别

    首先,看个图 cgi 全称 通用网关接口  是客户端想服务端请求数据传输的一种协议 它规定了服务器传输到php解释器的数据类型以及格式 不同类型的语言只要符合了cgi的标准,就成作为一个cgi程序跟服 ...

  10. CGI与FASTCGI区别

    CGI与FASTCGI区别 0.CGI的引入 1.关于CGI 1.1.什么是CGI? 1.2.CGI程序的工作原理 1.3.CGI程序的特点 1.4.CGI程序的应用领域 2.关于FastCGI 2. ...

最新文章

  1. python做excel表格柱状图_用python处理excel数据(八)实现excel表中柱状图功能
  2. EFI Shell 命令参考
  3. python常用数据结构
  4. Oozie基于Hue全流程调度
  5. MMDetection-配置文件
  6. stringBuffer的使用及字符串比较的区别
  7. Kinect学习笔记(五)——更专业的深度图
  8. 汉堡王什么汉堡好吃_汉堡王10元汉堡太好吃了,秒杀肯德基和麦当劳,一次吃两个...
  9. 一大波问题解决和配置备份 WCF快炼成精了
  10. IE6下溢出多余文字
  11. php上传文件502,PHPStrom上传文件报502错误原因
  12. 技术分析淘宝的超卖宝贝
  13. winserve2016 万能驱动网卡_Windows Server 2016中无线网卡驱动问题
  14. 百度地图只显示行政区
  15. SQLite3 编译
  16. 全新三维成像技术:我们离科幻故事里的立体投影又近了一步
  17. mysql union 慢_mysql查询慢的原因和解决方案
  18. 李沐动手学深度学习v2-目标检测中的锚框和代码实现
  19. 2022 年最佳 15 款监控工具!你不可错过
  20. 行业分析-全球与中国3D自动X射线检测(AXI)市场现状及未来发展趋势

热门文章

  1. linux 停止路由转发策略_Linux静态路由
  2. 360无痕浏览器_功能强大好用的浏览器
  3. 2014年计算机一级考试题目,2014年计算机一级考试WPS及基础模拟试题(2)
  4. 示波器采样速率单位Ms/s、Gs/s
  5. html怎么让字体自动变色,html怎么给字体设置颜色
  6. android环境混合app开发,cordova混合App开发:Cordova+Vue实现Android (环境搭建)
  7. mysql数据库存储过程语法错误_奇怪的mysql创建存储过程语法错误
  8. 在Spring3中使用注解(@Scheduled)创建计划任务
  9. Poj 2187 旋转卡壳
  10. [ACM] hdu 2079 选课时间(普通型母函数)