zoukankan      html  css  js  c++  java
  • cgi、fastcgi、php-cgi、php-fpm的关系

    1. CGI

    CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。

    CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。

    服务器接收到请求后,如果是index.html这样的静态文件,可以直接去相应的目录找到这个文件,然后返回给客户端,但是当发送的请求是index.php这样请求,显然这个是需要解析的,此时就需要服务器将这个请求传递给cgi程序解析,解析完成后返回结果。但是要传递什么内容呢,这个就是cgi来规定的。

    2. Fastcgi

    Fastcgi是用来提高CGI程序性能的,是CGI的升级版,一种语言无关的协议

    服务器每次将请求传递给cig程序解析的时候都会解析配置文件,比如php.ini,想想就知道这回影响性能,fastcgi会先启动一个master解析配置文件,初始化环境,然后再启动多个worker,当请求过来的时候master会传递给woker,然后立即去接受下一个请求。当worker不够用的时候会增加,当空闲的worker多的时候会停掉一些,这样的机制可以提高性能,节省资源。

    3. php-cgi

    • PHP-CGI是php自带的Fast-CGI管理器.
    • php.ini修改之后,必须kill掉php-cgi再启动php.ini 才生效。不可以平滑的重启
    • 内存不能动态分配
    • 启动php,指定启动的worker ,长期驻留在内存里 ,用户访问php文件, php-cgi 处理请求,返回结果

    4. Php-fmp

    • 非官方fastCgi进程管理器,后来php5.4开始,被官方收录了
    • 可以平滑重启php
    • 动态调度进程
    • 启动php,动态指定启动的worker ,长期驻留在内存里 ,根据来访压力动态增减worker的进程数量,用户访问php文件, php-fpm 处理请求,返回结果

    php-cgi和php-fpm的关系呢?

    php54是之前是一种关系,php54之后另一种关系。php54之前,php-fpm(第三方编译)是管理器,php-cgi是解释器。php54之后,php-fpm(官方自带),master 与 pool 模式。php-fpm 和 php-cgi 没有关系了。php-fpm又是解释器,又是管理器网上大部分说法:php-fpm 是管理php-cgi 的,是针对php54之前的

    参考资料

    https://www.awaimai.com/371.html

    https://segmentfault.com/q/1010000000256516

    http://cuishan.win/2017/02/05/cgi-fastcgi-php-cgi-php-fpm/

    https://www.zhihu.com/question/55835080

  • 相关阅读:
    VBA代码分行
    Excel VBA 操作 Word(入门篇)
    Excel公式与函数——每天学一个
    VBA二次学习笔记(1)——文件操作
    架构探险——学到的知识
    架构探险——搭建框架
    文件下载
    文件上传
    jdbc中的细节
    json
  • 原文地址:https://www.cnblogs.com/redirect/p/10066684.html
Copyright © 2011-2022 走看看