免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1480 | 回复: 0
打印 上一主题 下一主题

cgi fastcgi php-cgi php-fpm php spawn-php 说清楚咯 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:44 |只看该作者 |倒序浏览
上面的几个词语表面极其相似,但是实际几者是不同的,借用一句话“就像大熊猫与小熊猫的区别”
 
cgi(common gateway interface)通用网关接口,是早期实现动态网页的一种技术,cgi程序,也即cgi进程可以运行在本机,也可以运行在远端,与前段web通信的方法是通过pipe的形式,管道的形式,前段服务器的请求发给后端cgi是通过标准输入(standard input),cgi返回求求是通过标准输出(standard output),如果cgi返回标准错误(standard error),前段的web服务器就会记录错误,cgi在每次响应请求完成后自动退出,下次连接时在create,init
cgi优点:
1:简单易学
2:支持多平台
3:语言无关性,可以支持多种语言,php,perl,python,ruby等
4:进程独立性
cgi的缺点是:
性能低下,如前面说的由于cgi的每次请求的fork,使cgi性能大打折扣,为了解决这个问题,就出现了下面说的两中技术
1:server APIs
这种技术是通过将app服务器的进程加载到前段的静态页面服务器的进程地址空间,通过共享内存大大提高了性能,但也有一些不足就是平台相关性,架构相关性(多线程,单线程的问题)。典型的应用就是lamp,搭建lamp环境时只用装php,apache,那么apache就能响应php请求,原因就是如此,此时的php更像一个动态链接库,apache把php的请求在启动时加载到httpd进程地址空间中,所以不需要配置什么cgi之类的
2:fastcgi技术
fastcgi就是一个内存中常驻的cgi,解决了cgi不断fork的问题,提高了响应速度,与前段的web服务链接通过一个多路复用的链接(一个链接可以发送多个请求),apache默认不支持,所以apache要想支持fastcgi需要第三方模块(mod_fastcgi),而nginx在这方面支持的很好,这也是为什么nginx能够很好的利用fastcgi的原因,注意nginx链接fastcgi的tcp链接还是暂时的,这也是nginx下面需要改进的地方
 
php-cgi,php-cgi就是fastcgi技术实现下的php进程,它的名字就叫php-cgi
 
下面说下php-fpm,spawn-php这都是php的管理器,及实现对php的管理,即实现对php-cgi进程的管理,启动,重启等,下面有一个简单的实验可以很清楚的说明这个问题
 
linux+nginx+fastcgi
 
关键一点在编译php时候的两个参数
 
为php打上fpm补丁
gunzip -cd php-fpm-5.2.6 |patch -d  php5.2.6 -p1
 
./configure
--enable-fastcgi
--enable-fpm
 
然后是配置下nginx即可
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP