cgi、fastcgi、php-cgi、php-fpm的关系
1. CGI
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。
服务器接收到请求后,如果是index.html这样的静态文件,可以直接去相应的目录找到这个文件,然后返回给客户端,但是当发送的请求是index.php这样请求,显然这个是需要解析的,此时就需要服务器将这个请求传递给cgi程序解析,解析完成后返回结果。但是要传递什么内容呢,这个就是cgi来规定的。
2. Fastcgi
Fastcgi是用来提高CGI程序性能的,是CGI的升级版,一种语言无关的协议
服务器每次将请求传递给cig程序解析的时候都会解析配置文件,比如php.ini,想想就知道这回影响性能,fastcgi会先启动一个master解析配置文件,初始化环境,然后再启动多个worker,当请求过来的时候master会传递给woker,然后立即去接受下一个请求。当worker不够用的时候会增加,当空闲的worker多的时候会停掉一些,这样的机制可以提高性能,节省资源。
3. php-cgi
- PHP-CGI是php自带的Fast-CGI管理器.
- php.ini修改之后,必须kill掉php-cgi再启动php.ini 才生效。不可以平滑的重启
- 内存不能动态分配
- 启动php,指定启动的worker ,长期驻留在内存里 ,用户访问php文件, php-cgi 处理请求,返回结果
4. Php-fmp
- 非官方fastCgi进程管理器,后来php5.4开始,被官方收录了
- 可以平滑重启php
- 动态调度进程
- 启动php,动态指定启动的worker ,长期驻留在内存里 ,根据来访压力动态增减worker的进程数量,用户访问php文件, php-fpm 处理请求,返回结果
php-cgi和php-fpm的关系呢?
php54是之前是一种关系,php54之后另一种关系。php54之前,php-fpm(第三方编译)是管理器,php-cgi是解释器。php54之后,php-fpm(官方自带),master 与 pool 模式。php-fpm 和 php-cgi 没有关系了。php-fpm又是解释器,又是管理器网上大部分说法:php-fpm 是管理php-cgi 的,是针对php54之前的
参考资料
https://www.awaimai.com/371.html
https://segmentfault.com/q/1010000000256516
http://cuishan.win/2017/02/05/cgi-fastcgi-php-cgi-php-fpm/
https://www.zhihu.com/question/55835080
cgi、fastcgi、php-cgi、php-fpm的关系的更多相关文章
- CGI、FAST-CGI、PHP-CGI、PHP-FPM的关系
转自:https://www.awaimai.com/371.html 关于这一类的文章还有:https://zhuanlan.zhihu.com/p/20694204 在搭建 LAMP/LNMP 服 ...
- 《PHP - CGI/Fastcgi/PHP-FPM》
先说下我最近看到的一篇文章,哈哈哈,特别好玩. 一步步教你编写不可维护的 PHP 代码 之前一直知道 PHP 在 CGI 模式下运行.命令行下在 CLI 模式下运行. 但是 FPM 和 nginx 配 ...
- 基础概念PHP-FPM、FastCGI和CGI
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器.接下来我们就以图形方式,解释这些概念之间的关系. 基 ...
- php-fpm cgi fast-cgi
基础 在整个网站架构中,Web Server(如Apache)只是内容的分发者.举个栗子,如果客户端请求的是 index.html,那么Web Server会去文件系统中找到这个文件,发送给浏览器,这 ...
- CGI & FastCGI 协议
目录 CGI 是什么 CGI 特点 CGI 的流程 FastCGI 是什么 CGI & FastCGI(转载) 推荐Blog: CGI是什么,FastCGI是什么 CGI 是什么 公共网关接口 ...
- fastcgi与cgi的区别
fastcgi与cgi的区别 先讲下cgi:cgi在2000年或更早的时候用得比较多, 以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会fo ...
- 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 ...
- CGI/FASTCGI/ISAPI区别
一 CGI原理及其性能 1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座 ...
- [转] Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
随机推荐
- OC block声明和使用
#import "Button.h" typedef int (^MySum) (int, int); void test() { // 定义了一个block,这个block返回值 ...
- js 中获取 日期
运行结果
- 梯度下降(HGL)
线性回归:是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法. 对于一般训练集: 参数系统为: 线性模型为: 损 ...
- PAT (Basic Level) Practise (中文)-1040. 有几个PAT(25)
1040. 有几个PAT(25) http://www.patest.cn/contests/pat-b-practise/1040 字符串APPAPT中包含了两个单词“PAT”,其中第一个P ...
- 【题解】洛谷P1066 [NOIP2006TG] 2^k进制数(复杂高精+组合推导)
洛谷P1066:https://www.luogu.org/problemnew/show/P1066 思路 挺难的一道题 也很复杂 满足题目要求的种数是两类组合数之和 r的最多位数m为 w/k(当w ...
- Oracle数据库补充
约束: 什么是约束以及约束的作用: 为保证数据的完整性(一致性,准确性),需要对数据进行限制,这个限制就叫做约束 目的:保证数据的完整性(一致性,正确性),使数据符合业务规则(业务逻辑) 约束 ...
- fluentd安装和配置,收集docker日志
安装fluentd 参考文档: 官方文档 https://docs.fluentd.org/v0.12/categories/installation fluentd配置 https://www ...
- React学习(1)—— 基础项目搭建以及环境配置
首先,我们需要安装node.js,直接搜索并在官网下载安装包. node.js官网:https://nodejs.org/en/ 现在我们成功安装了node和npm,然后我们来用npm创建新的项目,首 ...
- Java源码解析——集合框架(二)——ArrayBlockingQueue
ArrayBlockingQueue源码解析 ArrayBlockingQueue是一个阻塞式的队列,继承自AbstractBlockingQueue,间接的实现了Queue接口和Collection ...
- php导出excel长数字串显示为科学计数方法与最终解决方法
1.设置单元格为文本 $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel-> ...