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

最新文章

  1. 《Android深度探索HAL与驱动开发》第四章阅读心得
  2. jQuery源码-dom操作之jQuery.fn.text
  3. POJ 2367 (裸拓扑排序)
  4. IOS开发-图片尺寸
  5. aspose.cell 自定义模板 SUM无效
  6. acdream LCM Challenge (最小公倍数)
  7. java中接口与多重继承的关系
  8. HTTP协议 概述
  9. JavaScript 语句后应该加分号么?
  10. Google Map API 学习六
  11. JPA概要
  12. hihocoder1302 最长回文子串
  13. 一步步优化JVM四:决定Java堆的大小以及内存占用
  14. iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)
  15. select默认选中项颜色为灰色,选择后变为黑色(js实现)
  16. react入门之使用webpack搭配环境(一)
  17. 三种方式设置特定设备UWP XAML view
  18. PHP数组实际占用内存大小的分析
  19. Win10 MySQL-python
  20. Python自动化--语言基础4--模块、文件读写、异常

热门文章

  1. 【9.29 模拟】T3 小清新最优化(easy)
  2. 【luogu P1807 最长路_NOI导刊2010提高(07)】 题解
  3. 【办公】Microsoft Office 2016 专业增强版下载及永久激活-亲测分享
  4. Linux/Mac scp命令笔记
  5. win10永久激活方法-备份
  6. c# 说说开发通用通信库,尤其是分布式服务的通信
  7. js/jquery 禁用点击事件
  8. DRF知识
  9. 使用hibernate框架连接oracle数据库进行简单的增删改
  10. winform Treeview控件使用