CGI、FastCGI、php-fpm

lnmp

在使用PHP开发应用时,我们用的最多的无非就是LNMP、LAMP等架构,这也是PHP开发的经典架构,使用起来简单好用,可正时因为简单好用, 使得很多人仅仅停留在会使用的层次上;CGI、FastCGI、php-fpm这些名词我们经常听到,但是你真的知道它们在整个架构中处于什么位置发挥什么作用吗?看完这篇文章,保证你如醍醐灌顶一般,清清楚楚。

http/https

一:CGI是什么?

CGI是一种协议,全称公共网关接口(Common Gateway Interface),什么是协议,就是一套标准,比如我们平时接触最多的http/https。CGI专门用在webServer(nginx、apache)与CGI程序之间通信,CGI应用程序就是用编程语言编写的应用程序,前提是这种语言具有标准输入、输出以及环境变量,比如php-cgi。

我们的webServer在收到用户的.php类型的请求,就会把请求提交给cgi程序,这时php-cgi程序根据提交参数进行处理,然后按照标准输出给webServer相应的html内容,服务器再返回给浏览器。整个过程中,CGI扮演了中间人的身份,完全独立于服务器和应用程序(php-cgi)之外。

网络图片

然而CGI有个很大的缺点,每一次的web请求都会退出进程,这也意味着每次请求都要重新开启进程,造成系统资源的浪费,在高并发的场景中,显然这不是最优的选择,因此就出现了FastCGI。

二:FastCGI又是什么?

FastCGI,从名字上看,应该是CGI的升级版,可以这么理解吧;不同于CGI的是,FastCGI是一种数据交互的二进制协议,没错,它仍然是一种协议,它的目的在于降低webServer与应用程序(php-cgi)之间交互的负载,提高单位时间内请求的吞吐量。

FastCGI使用常驻进程的方式处理请求,这些常驻进程都由FastCGI Server统一管理,跟webServer没有任何关系,请求过来时,webServer将环境变量和信息通过进程间通讯发送给FastCGI进程,处理完后返回给webServer,服务器再返回给浏览器。

万维网

FastCGI由于常驻进程,在请求量很小的时候仍然占用内存,因此,相比CGI消耗更多的系统的内存。php官方发布的php-cgi是自带FastCGI管理器的,然而在使用过程中,一旦修改php.ini配置文件,就要kill掉php-cgi进程,重新启动,不能热重启,所以又出现了php-fpm完美解决这个问题。

三:php-fpm厉害在哪?

web server简单请求过程

PHP-FPM全称:PHP FastCGI Process Manager,是用于管理php-fastcgi进程的管理器,php-fpm会开启一个master进程常驻,这个进程用来管理其他子进程work,而work进程则是按需开启,如果在一定时间段里没有请求到work进程,work进程就会被关闭,而当请求数量增大时,则会开启多个work进程来应付大量请求,work进程的最大数量不超过配置进程数。这样对进程池形成了很好的管理。也完美解决了上述两个问题。

php架构

怎么样?是不是感觉其实也没有想象中那么难理解,理解了这些,以后在解决问题的过程中,就能多几分把握问题关键点的几率。语言本没有好坏之分,架构则是一种思维体系,懂架构才能真正在技术的道路上越走越远。

今天的分享就到这里了,下期见!如果喜欢我的内容,关注我,下期更精彩~~

欢迎转发、留言~~

oracle使用cgi吗_php架构之CGI、FastCGI、php-fpm有什么关系?原来这么简单相关推荐

  1. cgi web 调用多次启动_CGI、FastCGI和PHPFPM有什么关系呢?

    文章来自:php自学中心网站 链接:http://www.startphp.cn/front/php/0108111.html 作者:磊丰 商务合作:请加微信(QQ):2230304070 文章正文 ...

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

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

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

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

  4. CGI,FastCGI和PHP-FPM之间的关系和区别

    CGI,FastCGI和PHP-FPM之间的关系和区别. 什么是CGI? 早期的web server只可以处理简单的静态web文件,但是随着技术的发展出现动态语言如PHP,Python.PHP语言交给 ...

  5. 什么是CGI?详细介绍Python CGI编程

    本文转载自:http://www.php.cn/python-tutorials-362584.html....概念可以帮助理解,CGI编程什么的真的不用过分纠结,要是大神做架构得看,我这种小白会用框 ...

  6. boa服务器如何运行cgi,嵌入式WEB服务器BOA+CGI.ppt

    嵌入式WEB服务器BOACGI 嵌入式WEB服务器:BOA+CGI 报 告 人: 李 实 * ASIPP 随着Internet技术的兴起,在嵌入式设备的管理与交互中,基于Web方式的应用成为目前的主流 ...

  7. Oracle数据库实例之进程架构(二)

    Oracle数据库实例之进程架构(二) 必需的后台进程 PMON PMAN LREG SMON DBW LGWR CKPT MMON & MMNL RECO 可选的后台进程 ARCn CJQ0 ...

  8. Oracle数据库实例之内存架构(一)

    Oracle数据库实例之内存架构(一) Oracle数据库内存结构 基本内存结构 Oracle内存管理 用户全局区:UGA 程序全局区:PGA PGA的内容 专用和共享服务器模式下的PGA 系统全局区 ...

  9. 2 Oracle深度学习笔记 内存架构之UGA

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 2.Or ...

最新文章

  1. 阿里大佬总结的算法进阶指南,助你进大厂!
  2. mysql b-a全局索引_MySQL中B+树索引的使用
  3. apache+php windows下配置
  4. oracle怎么读取表空间文件大小,oracle获取表空间文件大小
  5. 网页游戏为什么容易赚钱?(From:07073)
  6. HDFS Shell API(常用)
  7. matlab 实验七 低层绘图操作,matlab实验内容解答.doc
  8. 八:Webpack的加载器
  9. 如何在win10上连接苹果无线键盘
  10. tpshop报 商业用途必须购买正版,使用盗版将追究法律责任
  11. RMQ---csu1809
  12. php对接腾讯云直播,聊天,im,云录制产生回放
  13. 日期和时间范围区间怎么查询
  14. java:实现三重缓冲区(附完整源码)
  15. python打开图片的几种方法
  16. 【数学建模论文】数学模型分析红楼梦作者
  17. python爬虫及其可视化
  18. 【推荐】2022年环保行业研究报告产业发展前景市场投资行情分析白皮书(附件中为网盘地址,报告持续更新)
  19. SparkStreaming实时计算pv和uv,注意事项以及生产问题
  20. VMware Workstation 虚拟机快照备份管理

热门文章

  1. 研发工程规范性模型-DevSecOps
  2. 虚拟机提示找不到引导映像_从ISO镜像启动虚拟机,安装OS时提示no usable disks have been foun...
  3. oracle 参数类型 存储过程 获取_oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案...
  4. winform生成exe俩秒钟就退出_Python有多牛逼?三万多条数据,几秒钟全部搞定~
  5. php不能连接远程mysql_无法远程连接mysql怎么办
  6. ee可以有js吗 jvaa_EE今年最后一次邀请,最低分数线468分!2021年的40万新移民指标,你准备好了吗?!...
  7. Node.js基础学习(第二幕)
  8. 贝塞尔曲线初识 (数学)
  9. 三、java语法基础
  10. Javascript s04