• cgi:

早期的web服务器一般都只能处理静态资源,满足不了处理动态资源的需求,需要借助"java"、"php"等动态语言,这时候要与这些语言的解释器建立联系。"cgi"是应用程序(语言解释器)与Web服务器之间的接口标准。它("cgi")就是一个协议,规范了应用程序与web服务器(Apache、nginx)的通讯。

1:"cgi"是协议。
2:web服务器与应用程序的通讯标准。

  • php-cgi:

"php-cgi"是基于"cgi"协议,实现PHP脚本与web服务器通讯的应用程序

1:是一个可以执行php脚本应用程序(解释器)。
2:可以与服务器进行通讯。

注:

1.php脚本并不是一定要通过"php-cgi"才能执行,我们在命令行执行php脚本时,此处采用的是php内核提供的"cli接口"对php进行解析。

2."php-cgi"是基于"fast-cgi"协议实现的应用程序,虽然作为php官方自带的"cgi"管理器,但是却并不好用,主要体现在:

2.1:变更php.ini配置后,需重启"php-cgi"程序才能让新的php-ini生效,不可以平滑重启。
2.2:直接杀死"php-cgi"进程,php就不能运行了。(它是单进程的,一个进程处理一个请求,处理结束后进程就销毁)

  • fast-cgi:

"cgi"规范了服务器与解释器之间的通讯,但性能上存在着缺陷。
每当有请求发送给服务器时,php解析器会解析"php.ini"文件,加载相关扩展、初始化执行环境。
标准的"cgi程序"对每个请求都会执行这些步骤,所以处理的时间会比较长。
"fast-cgi"协议实现的应用程序,会先创建一个"主进程",解析配置文件,初始化执行环境;然后再创建多个"cgi解释器进程"
当请求过来时,"主进程"会传递给一个"cgi解释器进程",让其对本次请求进行解析,自己(主进程)立即可以接受下一个请求。
而且当"cgi解释器进程"不够用时,"主进程"可以根据配置预先启动几个"cgi解释器进程"挂起;当空闲"cgi解释器进程"太多时,也会停掉一些。减少每次对环境的初始化、动态管理各个"执行进程",从而提高性能。

1."fast-cgi"是一个协议。
2.相较于"cgi"协议实现通讯,效率更高(有进程负责初始化环境、接收请求;有进程只管解析脚本)。

  • php-fpm:

"php-fpm" 是对 "fastcgi"协议的具体实现,相较于"php-cgi",他负责管理一个进程池,来处理来自Web服务器的请求。
因为"php-cgi"只是个"cgi"程序,他自己本身只能解析请求,返回结果,不会进程管理。所以就出现了一些能够调度 "php-cgi"进程的程序(php-fpm、spawn-fcgi...)。并且"php-fpm"通过生成新的子进程可以实现"php.ini"修改后的平滑重启。

1."php-fpm"是对于"FastCGI"协议的实现,是一个应用程序。
2.相较于"php-cgi",更加高效(平滑重启、不需要每次都初始化环境...)

对cgi、php-cgi、fast-cgi、php-fpm最最最最最通俗的理解相关推荐

  1. Fast CGI 工作原理

    CGI的历史 早期的webserver只处理html等静态文件,但是随着技术的发展,出现了像php等动态语言. webserver处理不了了,怎么办呢?那就交给php解释器来处理吧! 交给php解释器 ...

  2. 打开cgi文件的网络服务器,cgi文件怎么打开 .cgi是什么文件 | 帮助信息-动天数据...

    cgi文件怎么打开 .cgi是什么文件 作者:dthost | 时间:2017-12-14 | 分类:未分类 | 18,533 次阅读 cgi格式文件是"公共网关接口脚本"类型文件 ...

  3. linux cgi转发串口数据库,CGI连接数据库的方法

    毫无疑问,当今Web程序设计中最吸引人而且最复杂的当然就是web数据库程序了.平心而论,其复杂高深的程度决不是你们可以想象得到的.我们先来看看其中涉及到的几个方面的问题: 1.最基本的html设计 2 ...

  4. C++ Web 编程 CGI公共网关接口(CGI):第一个 CGI 程序

    Table of Contents C++ Web 编程 什么是 CGI? Web 浏览 CGI 架构图 Web 服务器配置 第一个 CGI 程序 Hello World! 这是我的第一个 CGI 程 ...

  5. python的cgi配置教程_Python CGI环境在不同操作系统中配置方法

    我们今天主要为大家介绍的是有关Python CGI环境在不同操作系统中的配置方法.相信对于大多数开发人员来说,都急切的需要掌握这一应用技术.接下来就让我们一起来看看具体的应用方法吧. CGI 代表CO ...

  6. Linux_网络项目_WEB服务器 设计CGI机制,与CGI处理数据

    文章紧跟之前web服务器返回静态网页 文章目录 CGI设计思路: 设计CGI代码 CGI设计思路: CGI原理如下图: 其中CGI程序可以使用任何后端语言进行编写. 而服务器是可执行程序,而CGI程序 ...

  7. 增加fast cgi进程数 php7,使用 FastCGI 模式运行 PHP7 教程

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

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

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

  9. 在基于Jetty Fast CGI Proxy和php-fpm下配置Discuz

    终于把Discuz装上了,但是安装完以后发现问题一大堆..这个图片不显示,那个不能用的. 问题的根源在于因为我不是直接的php访问,而是通过php-fpm中转了一下,而discuz的代码里面很多直接引 ...

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

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

最新文章

  1. 反对迭代0:停止拖延,开始迭代
  2. SNAT,是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址
  3. Java命令行界面(第3部分):jbock
  4. ld: -pie can only be used when targeting iOS 4.2 or later clang: error: linker command failed with e
  5. VisualVM提示检测不到本地JAVA程序
  6. EXPEXPDP导出数据同步问题
  7. ubuntu14.04 LTS Visual Studio Code 编辑器推荐
  8. jquery城市选择案例
  9. EasyDarwin测试
  10. 最新版AltiumDesignerSummer9下载+破解
  11. 三维立体坐标系 html5,三维坐标系
  12. Sulfo CY5-MAL|磺基-CY5 马来酰亚胺
  13. 超低功耗MCU的选择方法
  14. 微信小程序之三元操作符
  15. git runner 配置_GitLab Runner安装注册配置管理
  16. Android TextView自动调整字体大小(官方)
  17. 20220614 笔记
  18. js 递归树根据子节点获取所有父节点
  19. 夏日葵电商:为你揭秘微信商城系统搭建的六大详细步骤
  20. 一种基于“spark lite”和“按键自动精灵”软件的不间断跑流量方法

热门文章

  1. 看“猫”片, 读懂HTTP状态码(多猫慎入)
  2. Linux系统适合日常使用吗?普通人学Linux能干什么
  3. VUE项目里返回按钮的处理(各个分页有返回按钮,首页没有)
  4. 20172305 2018-2019-1 《Java软件结构与数据结构》第六周学习总结
  5. android hint格式,自定义Spinner样式以及实现hint效果
  6. Oracle 闪回特性 详解
  7. 关系型数据库由哪三部分组成_关系数据库| 第1部分
  8. (转载)BOX2D V2.3.0 用户手册中文版(第4章)-碰撞模块
  9. 使用联合体判断大小端模式
  10. 四级英语——段落匹配(20分钟)