cgi和fast-cgi以及php-fpm的联系和区别

熵桥露台
• 阅读 1794

简单粗暴版本:
cgi(公共网关接口)

        ||

根据nginx配置文件,知道不是静态文件 需要去找PHP解析器来处理

        ||
            
带着URl,POST的数据、HTTP Header 以及查询字符串
        ||
      

会启动对应的CGI程序,这里就是PHP的解析器

        ||

PHP解析器会解析php.ini文件,初始化执行环境

         ||

处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程

        ||

web server再把结果返回给浏览器

好了,CGI是个协议
Fastcgi是用来提高CGI程序性能的。

PHP解析器会解析php.ini文件,初始化执行环境
准的CGI对每个请求都会执行这些步骤 太累了对吧 而且处理每个时间的时间会比较长
首先,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。

那PHP-FPM又是什么呢?是一个实现了Fastcgi的程序,被PHP官方收了。

大家都知道,PHP的解释器是php-cgi。php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理 所以就出现了一些能够调度php-cgi进程的程序。

点赞
收藏
评论区
推荐文章
DevOpSec DevOpSec
5年前
nginx安全配置
安全是一个重要的问题,必须引起注意。1.nginx介绍nginx本身不能处理PHP(http://www.ttlsa.com/php/"php"),它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fastcgi管理进程选择cgi子
Stella981 Stella981
4年前
InsightFace源码以及pre
一下摘自:https://blog.csdn.net/Fire\_Light\_/article/details/79602705(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2FFire_Light_%2Farticle%2Fdetails%2F7960
Easter79 Easter79
4年前
Tomcat & SVN
1\.Tomcat简介tomcat是一个web服务器,类似nginx,apache的httpnginx,http只能处理html等静态文件(jpg)网页分为静态网页(以.html或者.htm结尾的url地址)和动态网页nginx和http配合php就能够处理动态的网页(.php结尾)tomcat也可以处
Stella981 Stella981
4年前
Apache使用fcgi方式与PHP结合
简介FCGI全称Fast Common Gateway Interface(快速通用网关协议),是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本,FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使服务器可以同时处理更多的网页请求。早期的CGI技术使
Easter79 Easter79
4年前
TiDB Pre
8月30日,TiDB发布PreGA版。该版本对MySQL兼容性、SQL优化器、系统稳定性、性能做了大量的工作。TiDB:SQL查询优化器调整代价模型优化索引选择,支持不同类型字段比较的索引选择支持基于贪心算法的JoinReorder
Stella981 Stella981
4年前
QeePHP中的访问控制配置
(1)\_code/myapp.php文件中: /      访问被拒绝时的错误处理函数     /    protected function _on_access_denied()    {        $message  "";        require(_MYAP
Stella981 Stella981
4年前
Pre
PAT甲级1119,我先在CSDN上面发布的这篇文章:https://blog.csdn.net/weixin\_44385565/article/details/89737224(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fweixin_443855
Stella981 Stella981
4年前
FastCgi与PHP
首先,CGI是干嘛的?CGI是为了保证webserver传递过来的数据是标准格式的,方便CGI程序的编写者。webserver(比如说nginx)只是内容的分发者。比如,如果请求/index.html,那么webserver会去文件系统中找到这个文件,发送给浏览器,这里分发的是静态数据。好了,如果现在请求的是/index.php,根据配
Stella981 Stella981
4年前
Elasticsearch基本概念及核心配置文件详解
<divid"cnblogs\_post\_body"class"blogpostbody"<p&nbsp;  Elasticsearch5.X,下列的是Elasticsearch2.X系类配置,其实很多配置都是相互兼容的</p<h2id"1配置文件"1.配置文件</h2<prename"code"<codeclass
Stella981 Stella981
4年前
Django之常用配置
<h1在其它文件导入及变量命名注意事项</h1变量命名:必须都大写<preclass'brush:python'fromdjango.confimportsettings</pre<h1静态文件夹配置</h1比如需要引入jquery、bootstrap等文件,需要配置静态文件,步骤如下:步骤一、在<项目名称目录下新建
Stella981 Stella981
4年前
Git学习,记录一下!
想用PHP写点东西,然后根据之前的经验,不用版本控制工具的话,开发时还好,都知道各文件是做什么的,但是过一段时间后,就什么都不知道了,文件夹里一堆数字字母的缩写文件名不记得是做什么的了。选来选去,Git应该不差,Linux那么复杂都可以搞定,学学也不差,至于SVN,CVS之类,我有种感觉,这些工具正在过时,不知道是不是实事。http://code.