码迷,mamicode.com
首页 > Web开发 > 详细

搞不清FastCgi与PHP-fpm之间是个什么样的关系

时间:2016-04-27 00:11:41      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

首先,CGI 是干什么的?  CGI 是为了保证web server传递过来的数据是标准格式。CGI  是个协议和 进程没什么关系。

web server(如nginx)  只是内容的分发着。如果请求一个 index.html 那么web server 回去页面中找到

这个文件,并返回给浏览器。这里的分发是静态数据。

如果要请求一个 index.php  web server 就得先找到php的解析器来处理。那么他会把请求简单处理后交给php解析器

nginx 会传那些数据呢?url,post数据,header头这些总有吧。。此时CGI 就规定了要传那些数据,且这些数据的格式

当web server 接收到index.php  这个请求后 会启动对应的 CGI 程序 这就是 php解析器 接下来 php解析器会初始化

php.ini 文件,初始化执行环境,处理请求 然后再一CGI 规定的格式返回 退出进程 。web server 再吧结果返回给浏览器。

 

fastcgi  是提高CGI性能的。

提高性能 那么CGI程序的性能在那里? php 解析器会解析php.ini 文件,初始化执行环境,就在这里提高了。

标准的CGI请求 都会执行这个请求。这样一个一个 会很累的。所以处理时间会很长。当有了fastcgi 后  fastcgi 会先

启动一个master  解析配置文件,初始化执行环境。 此时在会启动多个worker 当请求过来时吧这个交给一个worker 由worker

去执行 然后直接接受下一个请求。 当worker 不足时会预先再启动一些worker  。  之后 如果有大多数worker 空闲shi 会停掉

一些worker 这样就提高了性能 节省了资源。这就是fastcgi 对进程的管理。

php-fpm 是一个实现了fastcgi的管理

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

调度php进程的管理 例如 php-fpm。就是这样的。

本人转载于:https://segmentfault.com/q/1010000000256516 

搞不清FastCgi与PHP-fpm之间是个什么样的关系

标签:

原文地址:http://www.cnblogs.com/yhl664123701/p/5437105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!