CGI、FastCGI和php-fpm的概念和区别
CGI是HTTP Server和一个独立的进程之间的协议,把HTTP Request的Header设置成进程的环境变量,HTTP Request的正文设置成进程的标准输入,而进程的标准输出就是HTTP Response包括Header和正文。
FASTCGI是和HTTP协议类似的概念。无非就是规定了在同一个TCP连接里怎么同时传多个HTTP连接。这实际上导致了个问题,有个HTTP连接传个大文件不肯让出FASTCGI连接,在同一个FASTCGI连接里的其他HTTP连接就傻了。所以Lighttpd? 引入了 X-SENDFILE 。
php-fpm就相当于是Apache+mod_php。无非php-fpm自带了FASTCGI Server,而Apache是HTTP Server。
那个WSGI和这个问题没啥关系吧。WSGI这个只是Python内部的一个接口。无论你前面是FASTCGI,HTTP,SCGI,uWSGI等协议,你的FASTCGI/HTTP/SCGI/uWSGI Server都以相同的参数格式去调用一个函数,这样你用Python写的Web应用并不需要修改代码,就可以运行在不同的Server后面了。无非CGI协议是进程间的,而WSGI是进程内的。
1. 一般web服务器接受到浏览器的请求时,如果是静态资源的话就直接将其返回给浏览器,如果是动态资源的话那就没有现成的资源返回了,那这个时候cgi就出场了
2. cgi可以理解为一种协议or一类处理程序,就是动态去生成文件,从程序上来理解就是web服务器exec这样一个进程,然后交给他一些输入参数,他就慢慢的处理完后把结果返回给web服务器,那从协议层面来说cgi协议就是规范了web服务器和cgi程序的一些输入输出参数的含义
3.所以可以有很多不同的cgi程序,别可以执行php脚本的or可以执行python脚本的,只要符合这类规范就能供web服务器调用,当然它的缺点就是每次都需要去启动这个cgi程序,这会使得处理速度很慢
4.针对这种缺陷加以改进就成了fastcgi,同样的他也可以理解为一种协议or一个程序,它跟cgi的不同就是不需要每次去exec,它会事先启动起来,作为一个cgi的管理服务器存在,预先启动一系列的子进程来等待处理,然后等待web服务器发过来的请求,一旦接受到请求就交由子进程处理,这样由于不需要在接受到请求后启动cgi,会快很多。
5.phpfpm是php对fastcgi的一种具体实现,它的启动后会创建多个cgi子进程,然后主进程负责管理子进程,同时它对外提供一个socket,那web服务器当要转发一个动态请求时只需要按照fastcgi协议要求的格式将数据发往这个socket的就可以了,那phpfpm创建的子进程去争抢这个socket连接,谁抢到了谁处理并将结果返回给web服务器,那phpfpm主进程干什么了?比方说其中一个子进程异常退出了怎么办,那phpfpm会去监控他一旦发现一个cgi子进程就会又启动一个,还有其他诸多管理功能
6 phpfpm作为一个独立的进程存在 通过socket与nginx建立连接,而mod_php 是作为一个模块被加载进了apache服务器,同时他们两作为cgi调度管理器,他们对其管理的方式也不一样
通俗的可以把服务器看作餐厅,用户请求看作来用餐的顾客,服务器处理请求看作解决顾客的就餐问题(响应输出一份饭)。
服务器上静态资源看作已做好的饭,只要放到餐盒里就可以返回给顾客,动态资源需要厨房大厨现成做份再放到餐盒里返回给顾客。
php_mod这个大厨有个特点,看见有顾客进门就点火,不管顾客要不要现做的,有点浪费资源
php_fpm这个大厨有好多小弟一直点着火(多个处理进程),等有顾客说要现做,大厨就安排小弟做份返回给客户
cgi也是个大厨,不过他等到顾客要现做,他才点火,做饭,然后熄火。等待下一个要现做的到来
fastcgi呢就是个大厨雇了一帮小弟,专门做需要现场做的饭,大厨只管分派任务,小弟真正操锅做饭
转载于:https://www.cnblogs.com/myJuly/p/10002216.html
CGI、FastCGI和php-fpm的概念和区别相关推荐
- Nginx + CGI/FastCGI + C/Cpp
http://www.cnblogs.com/skynet/p/4173450.html Nginx + CGI/FastCGI + C/Cpp 2014-12-19 11:05 by 吴秦, 197 ...
- Nginx + CGI/FastCGI + C/Cpp(编不过去,不搞了。。。)(Common Gateway Interface)
Nginx + CGI/FastCGI + C/Cpp 文章目录 1.CGI 1.1.环境变量 1.2.标准输入 总结:CGI使外部程序与Web服务器之间交互成为可能.CGI程式运行在独立的进程中,并 ...
- 漫谈CGI FastCGI WSGI
作者:auxten 链接:https://zhuanlan.zhihu.com/p/20054757 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. CGI(Comm ...
- CGI,FastCGI,spawn-fcgi,nginx组合使用
目录 fastCGI 1. CGI 1.1 简介 1.2 CGI处理流程 1.3 环境变量 1.4 标准输入 1.5 CGI程序结构 1.6 测试 2. FastCGI 2.1 什么是FastCGI ...
- php使用fpm fcgi模式,为所有PHP模式安装Ioncube Loader(CLI,CGI,FCGI和FPM)在Debian Wheezy...
为所有PHP模式(CLI,CGI,FCGI和FPM)安装Ioncube加载程序在Debian Wheezy 在本教程中,我将解释在Debian Wheezy上安装Ioncube Loader,以便可以 ...
- CGI,FastCGI和PHP-FPM之间的关系和区别
CGI,FastCGI和PHP-FPM之间的关系和区别. 什么是CGI? 早期的web server只可以处理简单的静态web文件,但是随着技术的发展出现动态语言如PHP,Python.PHP语言交给 ...
- 浅析 VO、DTO、DO、PO 的概念、区别和用处!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:cnblogs.com/qixuejia/p/4390086 ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
- map和foreach的区别和应用场景_浅析项目中常用的 VO、DTO、DO、PO的概念、区别和用处...
概念: 模型: VO与DTO的区别 VO与DTO的应用 DTO与DO的区别 DTO与DO的应用 DO与PO的区别 DO与PO的应用 本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和P ...
- 技术帖:砖混、砖木、钢混、板楼、塔楼、框架、框架剪力墙等概念之区别优劣...
技术帖:砖混.砖木.钢混.板楼.塔楼.框架.框架剪力墙等概念之区别优劣 http://bbs.fdc.com.cn/showtopic-16331376.aspx天天听KFS说这些词,资料上写这些词, ...
最新文章
- Linux帮助使用方法详解
- 12.前K个高频元素---使用优先队列和哈希表解决
- 如果你想成为年入 50w+ 的架构师,我建议你先看看这个...
- EOS节点之争已开始 准备好欣赏了么?
- 二进制查找替换常用函数
- pandas(二) -- Dataframe创建及索引
- servlet版本及容器和Java版本
- 2.16_vertexgraph_顶点类和图类 (更新)
- Matlab中fsolve传递系数变量
- Pandas 学习手册中文第二版·翻译完成
- 苹果手机来电归属地_Python批量查询手机号码归属地
- Python:处理车辆控制单元MDF(CANApe数据)记录文件思路
- vc使用nmake时报错
- SSM整合开发实战-poi导入导出excel-前言
- 根据经纬度获取地理位置
- 咸阳无房证明网上办理指南
- 《数》孙溟㠭先生篆刻
- Oracle学习的经验谈
- 软件创新实验室:MySQL数据库与简单SQL语句使用
- 三国群英传霸业之王服务器维护,《三国群英传2网络版》掌上助手APP曝光,三国群英传霸业之王...
热门文章
- 前端小白,如何快速提升自己?了解3点,找工作不用愁
- 断点运行的参数_利用 AicLaunchAdminProcess 参数污染 bypass UAC
- Opencv_黑白素描
- JS判断相等或者不等于(==、===、!=、!==)运算符
- Linux命令每五分钟执行一次,Linux crontab 每5秒钟执行一次 shell 脚本 的方法
- redis 中一个字段 修改map_Redis 几种数据类型及应用场景
- 排序算法java 简书_手撕算法---常见排序算法java实现
- 华科计算机专硕英语几,考研考华科计算机考数学几英语几啊,另外考华科数..._考研_帮考网...
- xMind思维导图软件如何合并多个导图
- 关于大量数据的随机打乱重保存.(少了详细解释,之后会更新)