zoukankan      html  css  js  c++  java
  • FastCgi 与 PHPFPM

    - 如果现在请求的是 /index.php,根据配置文件,nginx 知道这个不。是静态文件,需要去找 PHP 解析器来处理,那么他会把这个请求简单处理后交给 PHP 解析器。Nginx 会传哪些数据给 PHP 解析器呢?url、查询字符串、POST 数据、HTTP header 等等,CGI 就是规定要传哪些数据、以什么样的格式传递给后方处理这个请求的协议。当 web server 收到 /index.php 这个请求后,会启动对应的 CGI 程序,这里就是 PHP 的解析器。接下来 PHP 解析器会解析 php.ini 文件,初始化执行环境,然后处理请求,再以规定 CGI 规定的格式返回处理后的结果,退出进程。web server 再把结果返回给浏览器。
     
    fastCgi 是什么
    fastcgi是个协议 ,fastCgi 是用来提高 CGI 程序性能的。
    那么 CGI 程序的性能问题在哪呢?"PHP 解析器会解析 php.ini 文件,初始化执行环境",就是这里了。标准的 CGI 对每个请求都会执行这些步骤,所以处理每个请求的时间会比较长。
    那么 fastCgi 是怎么做的呢?首先,fastCgi 会先启一个 master,解析配置文件,初始化执行环境,然后再启动多个 worker。当请求过来时,master 会传递给一个 worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当 worker 不够用时,master 可以根据配置预先启动几个 worker 等着;当然空闲 worker 太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是 fastCgi 对进程的管理。
     
    PHP-FPM 是一个实现了 FastCgi 的程序,被 PHP 官方收录。
     
    PHP 的解释器是 php-cgi,它只是个 CGI 程序,只能解析请求,返回结果,不会进程管理。所以就出现了一些能够调度 php-cgi 进程的程序,比如说由 lighthttpd 分离出来的 spawn-fcgi、PHP-FPM。
     
    php-fpm的管理对象是php-cgi。php-cgi只是解释PHP脚本的程序,fastcgi是一个协议,php-fpm实现了这个协议
     
  • 相关阅读:
    Eclipse 3.7(代号Indigo) 中文字体太小解决办法(转)
    tomcat配置及使用 环境变量设置
    Eclipse启动的时候窗口一闪就关的解决办法(转)
    Jquery datatables 重载数据方法
    手把手教你从 Core Data 迁移到 Realm
    App 启动加载广告页面思路
    iOS 类似美团外卖 app 两个 tableView 联动效果实现
    从 ReactiveCocoa 中能学到什么?不用此库也能学以致用
    几句话实现导航栏透明渐变 – iOS
    谈谈iOS中粘性动画以及果冻效果的实现
  • 原文地址:https://www.cnblogs.com/tysdeblog/p/6111678.html
Copyright © 2011-2022 走看看