zoukankan      html  css  js  c++  java
  • 什么是CGI?什么是fastCGI?php-fpm,fastCGI,Nginx之间是什么关系

      CGi全称“通用网关接口”,是一个web服务器和php应用之间用于数据传递的协议,web服务器收到用户请求,就会把请求提交给cgi程序(如php-cgi),cgi程序根据请求提交的参数作应处理(解析php),然后输出标准的html语句,返回给web服服务器,WEB服务器再返回给客户端,这就是普通cgi的工作原理。好处是降低了服务器和应用之间的耦合性,缺点是每一次web请求都会有启动和退出过程,也就是最为人诟病的fork-and-execute模式,这样一在大规模并发下,就死翘翘了。

      介于此,诞生了fastcgi协议,用来提高CGI程序的性能。

      FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行,并且接受来自其它网站服务器来的请求。

     php-cgi呢,是php官方的亲儿子,但是一点不给力,php-cgi只能解析请求并返回结果,并不会进程管理。

    1. php-cgi变更php.ini配置后,需重启php-cgi才能让新的php-ini生效,不可以平滑重启。
    2. 直接杀死php-cgi进程,php就不能运行了。

    基于此,有人就开发出了管理php-cgi进程的程序,即php-fpm。PHP-FPM通过生成新的子进程可以实现php.ini修改后的平滑重启。

      

    1. Web Server启动时载入FastCGI进程管理器(Apache Module或IIS ISAPI等)
    2. FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可建多个php-cgi),并等待来自Web Server的连接。
    3. 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
    4. FastCGI子进程完成处理后,将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待,并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。          
    快,滋醒这个做梦的人,有糖尿病的往后靠靠哈,不要给他点甜头!
  • 相关阅读:
    vim中自动添加文件的作者、时间信息、版本等
    linux shell ipaddress
    java ant学习
    ganglia rpm安装
    深入分析 Java 中的中文编码问题
    javaIO调优
    超强的vim设置
    linux中core文件的生成和配置
    C和C++ 语言动态内存分配
    Linux的常用命令
  • 原文地址:https://www.cnblogs.com/jianzhaojing/p/13623509.html
Copyright © 2011-2022 走看看