首页 技术 正文
技术 2022年11月6日
0 收藏 907 点赞 824 浏览 1019 个字

http://blog.csdn.net/xsgnzb/article/details/52875331

CGI全称Common Gateway
Interface即公共网关接口,它遵循cgi规范,定义了与其他服务之间的通信协议,如nginx将请求转给php时,应该携带哪些信息,header、postdata、host等等,php在处理完程序之后返回内容的格式如何等规则。

 
     
php在使用CGI的方式启动时,在一个请求到来时,会加载php.ini文件初始化相关环境,在请求处理完之后又销毁。新请求过来时又进行一次同样的操作,消耗了服务器资源。 
     
为了解决这个问题,所以有了FAST-CGI的出现。 
     
FAST-CGI顾名思义是要提高CGI的效率,它主要处理CGI重复初始化的过程。先看下FAST-CGI的原理: 
  1、Web Server 启动时加载FAST-CGI的进程管理器,如apache
module 
 
2、FASTCGI进程管理器自身初始化,启动多个php-cgi(CGI解释器进程),并等待来自web server的链接 
 
3、接收到请求时,FastCgi选择并链接到一个php-cgi,将CGI的环境变量和标准输入发送到FastCgi的php-cgi进程 
  4、处理完成后,php-cgi将标准输出和错误信息返回web
server,并断开与FastCgi的连接,等待下一次请求接入。如果是CLI模式下,则php-cgi直接退出。 
     
FastCgi的缺点: 
 
启动多个进程,占用内存,一个php-cgi程序通常占用7-25M内存,如果在很多请求并发量下,内存消耗严重。 
     
PHP-CGI是FastCgi的管理进器,它的不足: 
  1、修改php.ini文件要重启php-cgi才能生效,不能平滑重启 
  2、直接杀死php-cgi,php不能运行
 
      PHP-FPM
即PHP FastCgi Process Manager,FasgCgi的进程管理器,它相对于PHP-CGI的优点: 
  1、平滑重载PHP配置 
  2、内存和进程控制更有效

在./configure的时候带
–enable-fpm参数即可开启PHP-FPM。

 
     
简单的理解,CGI和FASTCGI是通信协议V1.0和V2.0,而PHP-CGI和PHP-FPM是实现了这种协议的程序。所以处理具体请求的是PHP-CGI或PHP-FPM,它们遵循fastcgi协议。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295