cgi fastcgi php-cgi php-fpm的概念及关系

cgi 是web服务器与应用程序处理(比如php解析器也就是php-cgi)之间通信的一种协议
fastcgi 是用来提高cgi程序性能的
标准的cgi请求的步骤:web服务器调用php解析器处理php程序,php解析器会加载php.ini配置文件,初始化执行环境。耗时较长
php-fpm 是一个实现了fastcgi的程序,已被php官方收录。

想要理解这几个概念之间的关系,首先要先了解web服务器的基本知识。记住这么一句最简单却也最有用的一句话:**所有的web服务器设计之初都是为了提供静态资源的**。比如我们熟知的nginx/apache.互联网兴起之处,我们访问网站都是html文件、图片、视频、音频等等的静态资源,但随着发展和需求的增加,我们需要为用户提供基于数据库的一些动态资源,那些编译型语言或脚本语言可以和数据库打交道,提供给我们这些数据,但很明显web服务器是没有这种能力的,比如你的网站是php编写的,自然想需要php解析器来解析执行,web服务器可不行,但web服务器又需要这些解析器处理后的数据,所以这时候出现了cgi,cgi是一种早期的web服务器和应用程序处理之间的一种通信协议,只要遵循这个协议就可以,php可以,java可以,lua也可以。这时候只要web服务器(nginx)遵循了cgi,就可以和php解析器(windows下你可以理解为php.exe,linux下可以理解成php)打交道,获取处理后的数据了。
注意,这里的cgi是协议,但由于cgi比较老,本身也有性能问题,所以出现了fastcgi,所以,fastcgi也是一个协议,需要有人实现它,谁呢?早期实现了fastcgi协议的即为官方的php-cgi,虽然是官方出品,但php-cgi有严重的性能问题。这时候就出现了php-fpm(先已被官方收录)。所以php-cgi和php-fpm是同一级别的,都是实现了fastcgi的解析器。fastcgi是cgi的升级版,不用每次都fork一个进程的一种实现协议。
这里需要特殊说明的是,apache和nginx实现上的不同。nginx是典型的通过php-fpm工作的方式,但apache提供mod-php和mod-fastcgi两种模式。即前者将php解析器作为自己的一部分,自己不需要所谓的php解析器了,你来了动态请求我自己就能处理(这种模式下php解析器已经是apache的一部分了),这种模式叫做mod-php
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值