博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CGI,FASTCGI,PHP-CGI,PHP-FPM 概念
阅读量:5915 次
发布时间:2019-06-19

本文共 999 字,大约阅读时间需要 3 分钟。

CGI(Common Gateway InterFace)

既然webserver想把这个请求交给可以处理的人来做,是不是该告诉人家一些基本的,并且人家看得懂的信息信息?

Webserver会传那些基本信息给后端处理请求的解析器呢?url,get请求的query_string,POST数据,Http Header等,那么CGI就规定了要传哪些参数,以及以一个什么样的格式传过去,后端处理完这个请求,又该以什么样的格式传回。

概念:CGI(Common Gateway Interface)全称是“通用网关接口”,WEB 服务器与PHP应用进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。也就是说,CGI用来在web服务器与后端实现了CGI协议的程序之间提供一个沟通的桥梁,降低两者之间的耦合性。

缺陷:采用了效率低下的”FE”模式,就是Fork-And-Execute,每个web请求进来之后,都会启动一个php程序,处理完请求后退出,浪费资源,高请求数下,服务器宕机。

FastCGI

有没有效率更高的解决办法呢,可以不可一完事先别走呢?

这就衍生出了FastCGI,也可以理解为一种协议,在CGI协议上进行强化,从原来的”FE”模式进化为”LL”模式,即Long-Live模式,运行完毕之后,常驻内存。同样,它也是语言无关性的,只要你具有标准输入输出和环境变量,那么就OK。

FastCGI会先启动一个Master进程,Master读取和处理基础的配置文件,初始化环境,之后依据配置生成多个worker进程来处理请求。并且可以动态调整worker的数量。

PHP-CGI

Fast-cgi听起来很不错,有没人用用它的呀?php-cgi是实现FastCGI协议的php解释器。

缺陷:

更改php.ini配置后需要重启php-cgi进程,且会杀死正在运行的进程。

单进程,不具备进程管理能力,效率很低。

PHP-FPM

概念:一个实现FastCGI多进程(进程池)管理的管理器。开启之后,会看到多个php-cgi进程,它们都由php-fpm管理。

一些进步:

修改配置后,平滑过渡,新的worker进程使用新的配置,正在运行的worker进程处理完当前请求后自动shutdown。多进程的效率比单进程更高。

图片描述

转载来源:


图片描述

你可能感兴趣的文章
C++ ssd5 12 optional exercise2
查看>>
如何调用带返回值类型的函数
查看>>
linux网络编程涉及的函数
查看>>
数据表的相关操作
查看>>
POJ 2594 Treasure Exploration(最小可相交路径覆盖)题解
查看>>
数据挖掘十大经典算法
查看>>
ArcGIS API for Silverlight 调用GP服务加载等值线图层
查看>>
CentOS系统rsync文件同步 安装配置
查看>>
LogStash配置、使用(三)
查看>>
SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
查看>>
Chrome应用技巧之颜色拾取
查看>>
Linux之通配符
查看>>
ios中摄像头和图片调用
查看>>
Content Provider 基础 之URI
查看>>
管理表空间和数据文件——使用OMF方式管理表空间
查看>>
ios获取安装的app
查看>>
Visual Studio 2012出现“无法访问T-SQL组件和安装了不兼容伯 DacFx版本”的解决办法...
查看>>
第一个版本
查看>>
JSTL I18N 格式标签库 使用之二_____读取消息资源
查看>>
聊聊NettyConnector的start及shutdown
查看>>