首页 > 其他 > 详细

FastCGI和CGI运行差异知识普及

时间:2014-05-24 16:43:15      阅读:377      评论:0      收藏:0      [点我收藏+]

一、FastCGI是什么?

    FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。

    众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over特性等。

二、FastCGI的工作原理

    1)FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等待来自Web Server的连接。php-fpm进程管理器启动多个php-cgi FastCGI进程。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。

    2)当客户端请求到达nginx服务器时,nginx服务器将请求采用TCP协议或者UNIX套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。nginx服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

    3)FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回nginx服务器。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。而在一般的普通CGI模式中,php-cgi在此便退出了。

    在普通的CGI模式中。每一个nginx请求php都必须重新解析php.ini、重新载入全部扩展并重新初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发送一次。另外,FastCGI情况下,持续数据库连接也可以工作。

本文出自 “技术成就未来” 博客,请务必保留此出处http://jishuweiwang.blog.51cto.com/6977090/1416435

FastCGI和CGI运行差异知识普及,布布扣,bubuko.com

FastCGI和CGI运行差异知识普及

原文:http://jishuweiwang.blog.51cto.com/6977090/1416435

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!