Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系.

一、PHP+Nginx应运而生的场景.
随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大,野蛮生长在大数据时代里的WEB语言PHP也找到了比老搭档更优越的活力搭档Nginx,说到Nginx咱就一起唠一唠这其中的奥妙.

从以下几个维度来剖析一下Nginx的活力所在,当然是和解析PHP的老搭档APACHE相比而言.

  1. 性能
    1.1 资源占有率少,节省内存资源
    1.2 非阻塞式的请求处理机制给之增加了强劲动力,这也是为什么能在高迸发折腾下保持金枪不倒之势. 哈哈~
    1.3 有很多资料千篇一律说性能比Apache提升了3倍,这块不敢苟同。
  2. 延展性
    2.1 高内聚的模块化设计,简介的模块编写,使得产品更具魅力和活力
    2.2 有活跃的技术社区和技术群体,便于技术的支持度.
  3. 量级和可用性
    3.1 轻量级
    3.2 解析静态页面远比解析动态页面性能好.
    3.3 配置更简洁友好,戒掉了臃肿. 美中不足的是URL重写还待加强.
    3.4 新兴意味着有稳定性的挑战和GUG的伴随,当然不必担忧,有前人铺路呢.

二、什么是CGI、什么是FastCGI,什么是PHP-Fpm,什么是PHP-cgi

CGI :是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口
FastCGI : 是CGI的fast版本(哈哈,急速版)多数流行的HTTP server都支持FastCGI,包括Apache、Nginx和lighttpd等,这一带Fast可了不得了:
1.性能提升.他老爹处理请求时遇到动态脚本解析器。
2.升级附带了支持高迸发性
3.安全上做了升级
说道性能提升了,肯定有性能提升之道,那提升的原理是啥呢?
1.1 接口处理方式采用了 C/S 结构. 在处理机制上就使得HTTP服务和脚本解析器剥离开来,使得部署变得可分离,这样脚本解析服务器可以分出来多个守护进程,遇到动态脚本则分发给FastCIG,将得到结果反给浏览器。HTTP服务器呢则一心一意的干静态资源解析方面的活。这就相当于是多线程的概念啦,当然会快呀。
PHP-Fpm : 这个就是咱们上面提到的脚本解析守护进程.
PHP-Cgi : 是PHP自带的FastCGI管理器。

三、Nginx如何解析PHP
Nginx 是没法解析动态脚本的,下面看一张原理解析图片,说白了Nginx解析php是通过fast-cig + php-fpm配合完成的.

用户通过浏览器访问PHP页面时候,流程是首先请求到了Nginx服务器,服务器发现是动态请求,Nginx通过Fast-cgi接口来跟动态脚本PHP通信,Fast-cig在Linux下是socket(文件或者Ip类型),通信过程中由FastCGI的wrapper(wrapper可理解为用于启动另外一个线程的程序)进而启动一个CIG的解析器.Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi
FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server再返回给用户。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了,在php-cgi启动的过程中,会有守护者或者说管理者(PHP-fpm),防止php-cgi的崩溃.
这样整流程也算完成了.

转载 http://blog.csdn.net/qq_36031499/article/details/53911906

Nginx 解析PHP的原理 | CGI、FastCGI及php-fpm的关系的更多相关文章

  1. Nginx解析PHP的原理 | CGI、FastCGI及php-fpm的关系

    Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一.PHP+Nginx应运而生的场景.随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大, ...

  2. Nginx + CGI/FastCGI + C/Cpp

    接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...

  3. [转] Nginx + CGI/FastCGI + C/Cpp

    接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...

  4. 转:nginx+CGI/FASTCGI

    简介版: 1.fastcgi与cgi区别:fastcgi通过线程来响应请求,而cgi对每个请求生成一个进程. 2.典型nginx数据传输过程:user->nginx->本地socket(请 ...

  5. 【转】Nginx + CGI/FastCGI + C/Cpp

    接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...

  6. PHP运行模式(cgi,fast-cgi,cli, ISAPI ,web模块模式)【转载】

    PHP运行模式有5钟: 1)cgi 通用网关接口(Common Gateway Interface))2)fast-cgi 常驻 (long-live) 型的 CGI3)cli  命令行运行   (C ...

  7. nginx解析漏洞复现

    nginx解析漏洞复现 一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1. 由于nginx.conf的如下配置导致nginx把以’.php’结尾的文件 ...

  8. Nginx 解析漏洞复现

    一.漏洞描述 该漏洞与nginx.php版本无关,属于用户配置不当造成的解析漏洞 二.漏洞原理 1.由于nginx.conf的如下配置导致nginx把以'.php'结尾的文件交给fastcgi处理,为 ...

  9. 用户对动态PHP网页访问过程,以及nginx解析php步骤

    www.example.com | Nginx | 路由到www.example.com/index.php | 加载nginx的fast-cgi模块 | fast-cgi监听127.0.0.1:90 ...

随机推荐

  1. window、Linux 文本文件转换

    如下: $ sed -e 's/.$//' mydos.txt > myunix.txt $ sed -e 's/$/\r/' myunix.txt > mydos.txt

  2. MTK USER版本禁止log输出

    1.bootable/bootloader/lk/app/mt_boot/mt_boot.c sprintf(cmdline,"%s%s",cmdline," print ...

  3. iOS企业版打包 发布在线安装包 plist

    本文转载至 http://blog.csdn.net/u011452278/article/details/49511385 原文转载:http://blog.csdn.net/pang040328/ ...

  4. LeetCode - 868. Binary Gap

    Given a positive integer N, find and return the longest distance between two consecutive 1's in the ...

  5. bootstrap 使用总结

    1.如何设置一行两列? <div class="container"> <div class="row"> <div class= ...

  6. HTML <script> 标签的 defer 和 async 属性

    HTMKL <script>标签中有defer和async属性,简单介绍一下两者的区别吧.   普通的script标签会让浏览器立即下载并执行完毕,执行也是按照先后顺序,再进行后面的解析. ...

  7. mac homebrew

    brew 全称Homebrew  是Mac OSX上的软件包管理工具 Homebrew 安装和卸载工具 只用一行命令就能完成 官方地址:    http://brew.sh/index.html   ...

  8. P1002 过河卒

    题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为“马拦过河卒”. ...

  9. Logcat

    logcat -- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志; -- "-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参 ...

  10. Gym 101775B - Scapegoat - [贪心+优先队列]

    题目链接:http://codeforces.com/gym/101775/problem/B Aori is very careless so she is always making troubl ...