zoukankan      html  css  js  c++  java
  • php cgi&fastcgi&php-fpm

    CGI(Common Gateway Interface),通用网关接口。设置了web server的外部程序的规范。

    简单理解,就类似于php的接口,定义了输入、环境变量、输出的规范。

    interface Cgi
    {
       function input();
       function env();
       function output();       
    }
    标准输入 STDIN (get方式的请求,不放在标准输入中。post可以。)
    环境变量  系统环境变量+当有http请求时(http服务器+客户端+cgi传输过程的信息),如php的$_SERVER信息是从此处获取的
    标准输出 STDOUT ((mime类型 / location / 状态码)作为第一行 + 空行 + 输出内容)

    cgi是运行在服务器上的,用于服务器与程序间的交互。

    任何遵守cgi规范的程序都可以称为cgi程序。

    php经常使用的服务器是nginx或Apache。

    不过cgi有个硬伤,每次一个请求过来,都需要重新fork一个新的cgi进程,请求结束再kill掉该进程。若是有大量的请求过来,将直接搞摊服务器。

    fastcgi就是为了处理这种情况而诞生的 ,每次fork一个cgi进程,请求结束并不会kill掉该进程,而是放回cgi池子,等待下一个请求。

    有这么多的cgi进程,为了进一步管理这些cgi进程,php-fpm诞生了。

    php-fpm有一个master进程和N个worker进程,master进程是管理worker进程的,可以理解为管理者。worker进程就是干活的小弟,将请求转给php-cgi去处理。

    每次有一个新的请求过来,master进程将其放在一个队列中,让worker进程去抢夺这些请求。

  • 相关阅读:
    ReentrantLock与Condition构造有界缓存队列与数据栈
    ReentrantLock
    文件下载
    scala初学
    bootstrap table 显示连续序号,分页有效
    web中servletcontext和applicationContext
    checkbox是否选中判断
    bookstrap form表单简单-smart-form
    charts柱状图,定时刷新
    js对象和json的区别
  • 原文地址:https://www.cnblogs.com/huachengai/p/13299180.html
Copyright © 2011-2022 走看看