CGI概念
CGI(通用网关接口,Common Gateway Interface)
CGI是Web服务器与请求处理程序之间传输数据的一种标准,保证Web服务器传递过来的数据是标准格式的,其程序须运行在网络服务器上。
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。
工作原理:
每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如:PHP-CGI),当CGI满足要求后,WEB服务器就杀死这个进程。
Web服务器(如:Nginx)只是内容的分发者,如果请求/index.html,Web服务器会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。
如果现在请求的是/index.php,根据配置文件,Nginx知道这个不是静态文件,他会把这个请求简单处理后交给PHP解释器。
Nginx会传哪些数据给PHP解释器呢?url,查询字符串,POST数据,HTTP header等,CGI就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。
当Web服务器收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解释器。
接下来PHP解释器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程。Web服务器再把结果返回给浏览器。
FastCGI(快速通用网关接口,Fast Common Gateway Interface)
FastCGI是Web服务器与请求处理程序之间传输数据的一种标准,是CGI的增强版本,用来减少网页服务器与CGI程序之间互动的开销,从而使服务器可以同时处理更多的网页请求。
FastCGI像是一个常驻(long-live)型的CGI,只要激活后,它可以一直执行着。
FastCGI支持分布式的运算,程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并提供良好的性能、伸缩性、 Fail-Over特性等等。
FastCGI在进程中的应用程序,不依赖于任何Web服务器的内部架构,独立于核心Web服务器运行,即使服务器技术的变化,FastCGI依然稳定不变。
工作原理:
Web服务器启动时载入FastCGI进程管理器(如:Apache Module)
FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi)并等待来自Web服务器的连接
当客户端请求到达Web服务器时,FastCGI进程管理器选择并连接到一个CGI解释器。Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web服务器中)的下一个连接。在CGI模式中,php-cgi在此便退出了。
在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。
使用FastCGI,所有这些都只在进程启动时发生一次。
PHP-CGI(PHP通用网关接口,FastCGI Process Manager)
PHP-CGI是PHP的解释器,是PHP自带的FastCGI管理器。不支持平滑重启
PHP-FPM(PHP Fastcgi进程管理器,FastCGI Process Manager)
PHP-FPM调用PHP解释器(PHP-CGI)进程来处理请求,实现了Fastcgi协议,已被PHP官方收录
PHP-FPM控制的进程cpu回收的速度比较慢,内存分配均匀,有效控制内存和进程
PHP-FPM的配置在php-fpm.ini文件里,可以通过php/sbin/php-fpm进行启动、关闭,支持平滑重启,在./configure的时候带–enable-fpm参数即可开启PHP-FPM
参考资料:
http://www.nowamagic.net/librarys/veda/detail/1319
https://segmentfault.com/q/1010000000256516
CGI概念的更多相关文章
- 【Web学习笔记】浅析CGI概念及用法
1. CGI是什么 CGI是Common Gateway Interface的简写,它提供了一种标准方法使得位于WebServer后端的web应用可以根据client的请求动态生成网页 ...
- CGI和ISAPI
1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座桥,把网页和WEB服务器 ...
- CGI/FASTCGI/ISAPI区别
一 CGI原理及其性能 1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座 ...
- 简单说明CGI是什么
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- 简单说明CGI和动态请求是什么
1. CGI是什么 CGI是common gateway interface的缩写,大家都译作通用网关接口,但很不幸,我们无法见名知意. 我们知道,web服务器所处理的内容都是静态的,要想处理动态内容 ...
- CGI与ISAPI的区别(转)
一 CGI原理及其性能 1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座 ...
- [转帖]CGI与ISAPI的区别(转)
CGI与ISAPI的区别(转) 不知道原始网站是哪个 博客园里面也是转帖的 https://www.cnblogs.com/eret9616/p/8515095.html 不过我还是不了解CGI和IS ...
- 基础概念PHP-FPM、FastCGI和CGI
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器.接下来我们就以图形方式,解释这些概念之间的关系. 基 ...
- CGI、FastCGI和php-fpm的概念和区别
CGI是HTTP Server和一个独立的进程之间的协议,把HTTP Request的Header设置成进程的环境变量,HTTP Request的正文设置成进程的标准输入,而进程的标准输出就是HTTP ...
随机推荐
- NoSQL 数据库分类
类型 部分代表 特点 列存储 Hbase Cassandra Hypertable 顾名思义,是按列存储数据的.最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有 ...
- iOS 检测状态栏点击事件
当tableView.scrollsToTop=YES不管用时,可以使用以下方法实现点击状态栏使tableView滚动到顶部. - (void) touchesBegan:(NSSet *)touch ...
- Shader实例:扭曲,漩涡
效果: 案例:新仙剑,王者之剑. 在切换场景的时候,就会有这样的全屏扭曲效果. 思路: 1.用GrabPass抓屏到一张纹理中. 2.进行扭曲,绘制到UGUI的Image上. 准备: 去官网下载Uni ...
- 二分图&网络流&最小割等问题的总结
二分图基础: 最大匹配:匈牙利算法 最小点覆盖=最大匹配 最小边覆盖=总节点数-最大匹配 最大独立集=点数-最大匹配 网络流: 技巧: 1.拆点为边,即一个点有限制,可将其转化为边 BZOJ1066, ...
- BZOJ2506: calc
Description 给一个长度为n的非负整数序列A1,A2,…,An.现有m个询问,每次询问给出l,r,p,k,问满足l<=i<=r且Ai mod p = k的值 ...
- CSS 是程序员的画笔
在未来的所有界面.皮肤,都将使用CSS来表现.包括网页.应用.甚至现实物体的包装等等. 因为CSS实践的理念十分优秀:抽离.分类.统一. CSS将是程序员的画笔. 刚做出来的程序基本都是一个样子.产品 ...
- jquery基本
对于jquery属性的访问: //对于bool值的属性,元素标签中如果写了这个属性,attr能够获取到,如果没有写,就获取不到. 如:<input type="checkbox&quo ...
- sql筛选查询A表中B表已经存在的数据
SELECT *FROM A LEFT OUTER JOIN B ON A.ID = B.IDWHERE B.ID IS NULL 开发实例: SELECT Position_Car.Area, Po ...
- oracle遍历表更新另一个表(一对多)
declare cursor cur_test is select t.txt_desig, m.segment_id, s.code_type_direct, case when s.uom_dis ...
- DIV+CSS自适应布局
自适应布局分两类:高度和宽度,方法有很多,我用三列布局举例,我就列几个通俗易懂的例子呗,懂了三列的,两列的原理一样,呵呵哒. 效果图如下:高度自适应——宽度自适应 1,高度自适应 ...