您的位置:首页 > 编程语言 > PHP开发

CGI、FastCGI、php-fpm个人理解

2017-07-14 10:06 218 查看

CGI、FastCGI、php-fpm个人理解:

其实一开始我不知道这个几个东西的,没有接触过。第一次听说是在面试的过程看到的一个面试题,需要我简述一下FastCGI和php-fpm的关系,当时一看到这题整个人都是蒙圈的。什么是FastCGI?php-fpm又是什么?完全陌生的东西啊!php有这个东西吗?结果不言而喻,一个让我面红耳赤又收获颇多的面试经验。面试结束后回家赶紧的查了下FastCGI和php-fpm是什么。下面说说个人的理解:

在说FastCGI和php-fpm之前我们需要了解什么是CGI。什么是CGI呢!

CGI:百度百科说的是一种接口标准、还有一种网上说的是一种协议(是一种web服务器和后台CGI程序之间通信的协议)。懵逼吧!是不是觉得这说了跟没说一样?我们继续。我们知道web服务器能处理浏览器请求的静态资源,比如获取图片,html静态页面,但是不能处理form表单和动态语言脚本,比如php、jsp等。于是我们的CGI程序就来处理问题了。CGI程序在处理完form表单后会返回web服务器相应信息再由web服务器将信息返回给浏览器,这样就实现了我们的浏览器和web服务器的交互。而CGI就是web服务器调用CGI程序时的一种标准规则(既告诉web服务器在调用CGI程序时应该传递哪些信息和参数,就像是手术的医生和护士一样,医生告诉护士需要什么工具护士就给医生什么工具。不能乱来!)

FastCGI:百度百科说的FastCGI像是一个常驻(long-live)型的CGI。很简单我个人理解就是FastCGI相比CGI多了个进程管家,CGI是fork-and-execute
模式就是需要使用的时候就fork一个子进程然后去执行,这是很浪费时间的。而FastCGI就是当服务器启动时就fork一些CGI进程存储在内存当中,当遇到需要使用时就从内存中查找空闲的进程去链接CGI程序进行相应的处理。其实我跟觉得FastCGI是CGI的升级。(其实看到这里我个人也是觉得有点别扭的。怎么说呢!CGI是一种规则一种协议没有具体的体现。但是FastCGI又不像是一种规则一种协议有具体的体现。所以一般来说呢,我会称呼CGI为管道,而FastCGI呢我称呼为管道的集合。)

PHP-FPM:PHP-FPM是一个PHPFastCGI管理器,是只用于PHP的。看到这句话结果就不言而喻了,其实php-fpm就是一个FastCGI只不过这个FastCGI是专属于php的也就是说PHP-FPM所管理的子进程是只能解析php脚本语言的CGI程序。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: