`

三 FastCGI与CGI解释器的区别,及其工作原理

阅读更多
一、FastCGI是什么:
是一个可伸缩、高速的在web server和脚本语言间通迅的接口

CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如php-cgi.exe),当CGI满足要求后,WEB服务器就杀死这个进程。
    所以,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以 提供良好的性能、伸缩性、Fail- Over特性等等。
    FastCGI的官方站点在http://www.fastcgi.com

FastCGI的工作原理是:
  1、Web Server 启动时载入FastCGI进程管理器【PHP的FastCGI进程管理器是PHP-FPM(php-FastCGI Process Manager)】。
  2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字(socket)两种方式启动。
  3、当客户端请求到达Web Server时,Web Server将请求采用TCP协议或socket方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程php-cgi.exe)。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。
   4、FastCGI子进程php-cgi.ex完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 而在CGI中,php-cgi子进程在此便被退出了。

  在上述情况中,你可以想象 CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI,所有这些 都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。
可以令PHP程序从原来的请求-启动-运行到请求-运行模式,大大提高了脚本的执行效率,减轻服务器的负荷。

二:PHP的FastCGI的优点:
1.php脚本运行速度更快,php解释程序被载入内存而不是每次需要时从存储器读取,极大提升了依靠脚本运行站点的性能。
2.需要使用的系统资源更少,由于服务器不用在每次需要时都载入php解释程序,你可以将站点的传输速度提升很多而不必增加cpu负担。


ref:http://blog.csdn.net/m13666368773/article/details/8017673
分享到:
评论

相关推荐

    CGI与fastCGI

    本资源中描述了CGI与FASTCGI的区别与联系,对初学者很有帮助。

    Fastcgi中文手册

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

    FastCGI Extension for IIS

    FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,...

    nginx+fastcgi编译与移植手册

    nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册

    fastcgi c++

    fastcgi fastcgi fastcgi fastcgi fastcgi

    一文读懂CGI、FastCGI、php-cgi、php-fpm的区别

    一文读懂cgi、fastcgi、php-cgi、php-fpm的区别CGI诞生之前CGI的诞生CGI程序如何工作Web服务器的内置模块FastCGIphp-fpmphp-cgiphp-cgi与php-fpm的区别 CGI诞生之前 在CGI诞生之前Web服务器负责静态文件的存储、查找...

    第4章 Nginx与PHP(FastCGI)的安装、配置与优化

    当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,...

    什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI.pdf

    什么是CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI.pdf

    PHP7内核CGI与FastCGI详解

    CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。 FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。 PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序...

    lighttpd fastcgi

    修改为自己的工作目录 var.server_root = "/home/caoft/lighttpd/lighttpd_websocket_fastcgi/http_server" var.state_dir = "/home/caoft/lighttpd/lighttpd_websocket_fastcgi/http_server" var.home_dir = "/...

    mod_fastcgi-2.4.6.tar.gz

    [原创] Redhat 上 FastCGI 安装与配置 软件包 相关软件包: httpd httpd-devel fcgi-2.4.0.tar.gz mod_fastcgi-2.4.6.tar.gz 请仔细阅读其中的README 配置httpd.conf: LoadModule fastcgi_module modules/mod_...

    php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?

     FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器...

    FastCGI / CGI C++ library-开源

    用标准C ++编写的现代可移植CGI库。 在Boost C ++库(特别是Boost.Asio)的基础上,清晰,简单,高效的库都支持异步CGI和FastCGI。 可根据要求提供免费和商业支持。

    fcgiwrap, CGI脚本的简单FastCGI包装.zip

    fcgiwrap, CGI脚本的简单FastCGI包装 fcgiwrap信息:主页:作者:贡献者CGI脚本的简单FastCGI包装http://nginx.localdomain.pl/wiki/FcgiWrapGrzegorz Nosek <root@localdom

    fastcgi头文件和库

    fastcgi头文件和库

    kcgi, 用于 C/C 的最小CGI和FastCGI库.zip

    kcgi, 用于 C/C 的最小CGI和FastCGI库 概要kcgi是用于 C/C 网络应用程序的开源CGI和FastCGI库。 它最小。安全和审计;并且适合于你的 BCHS软件栈。这里存储库包含版本之间的边缘代码: 要保持最新版本的kcgi,请访问...

    IIS FASTCGI安装程序

    用于IIS的FASTCGI模块安装包,版本1.5RC

    Java的FastCGI网关 jFastCGI

    Java的FastCGI网关 jFastCGI

    apache访问cgi文件时,显示的内容是以ELF开头的乱码文字,如何解决.zip

    apache访问cgi文件时,显示的内容是以ELF开头的乱码文字,如何解决.zip 用C语言编写的WEB后端程序是CGI的实现语言之一 但是访问CGI时会显示ELF开头的文件,这是为什么呢?怎么解决?

    FastCGI SDK

    FastCGI的官方开发包,包含C, C++, Perl, Java, 库等文档与开发资源。(FastCGI官网已经打不开了 QwQ)

Global site tag (gtag.js) - Google Analytics