zoukankan      html  css  js  c++  java
  • Nginx 解析PHP的原理 | CGI、FastCGI及php-fpm的关系

    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配合完成的.
    140224291.png
    用户通过浏览器访问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

  • 相关阅读:
    CodeForces Gym 100935G Board Game DFS
    CodeForces 493D Vasya and Chess 简单博弈
    CodeForces Gym 100935D Enormous Carpet 快速幂取模
    CodeForces Gym 100935E Pairs
    CodeForces Gym 100935C OCR (水
    CodeForces Gym 100935B Weird Cryptography
    HDU-敌兵布阵
    HDU-Minimum Inversion Number(最小逆序数)
    七月馒头
    非常可乐
  • 原文地址:https://www.cnblogs.com/rickzhai/p/7896391.html
Copyright © 2011-2022 走看看