`
shicheng
  • 浏览: 165335 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
社区版块
存档分类
最新评论

什么是 FastCGI

    博客分类:
  • PHP
阅读更多

FastCGI 是什么?

FastCGI 是语言无关的、可伸缩架构的 CGI 开放扩展,其主要行为是将 CGI 解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI 解释器的反复加载是 CGI 性能低下的主要原因,如果 CGI 解释器保持在内存中并接受 FastCGI 进程管理器调度,则可以提供良好的性能、伸缩性、Fail-Over(故障切换)特性等等。

FastCGI 的官方站点在 http://www.fastcgi.com/

FastCGI 工作原理

  1. Web Server 启动时载入 FastCGI 进程管理器(IIS ISAPI 或 Apache Module);
  2. FastCGI 进程管理器自身初始化,启动多个 CGI 解释器进程 (在任务管理器中可见多个 php-cgi.exe)并等待来自 Web Server 的连接。
  3. 当客户端请求到达 Web Server 时,FastCGI 进程管理器选择并连接到一个 CGI 解释器。Web server 将 CGI 环境变量和标准输入发送到 FastCGI 子进程 php-cgi.exe。
  4. FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回 Web Server。当 FastCGI 子进程关闭连接时,请求便告处理完成。FastCGI 子进程接着等待并处理来自 FastCGI 进程管理器(运行在 WebServer 中)的下一个连接。 在正常的 CGI 模式中,php-cgi.exe 在此便退出了。

在上述情况中,你可以想象 CGI 通常有多慢。每一个 Web 请求 PHP 都必须重新解析 php.ini、重新载入全部 dll 扩展并重初始化全部数据结构。使用 FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。

为什么要使用 FastCGI,而不是多线程 CGI 解释器?

这可能出于多方面的考虑,例如:

  1. 1、你无论如何也不能在 Windows 平台上稳定的使用多线程 CGI 解释器,无论是 IIS ISAPI 方式还是 APACHE Module 方式,它们总是运行一段时间就崩溃了。奇怪么?但是确实存在这样的情况!
    当然,也有很多时候你能够稳定的使用多线程 CGI 解释器,但是,你有可能发现网页有时候会出现错误,无论如何也找不到原因,而换用 FastCGI 方式时这种错误的概率会大大的降低。我也不清楚这是为什么,我想独立地址空间的 CGI 解释器可能终究比共享地址空间的形式来得稳定一点点。
  2. 性能!性能?可能么,难道 FastCGI 比多线程 CGI 解释器更快?但有时候确实是这样,只有测试一下你的网站,才能最后下结论。原因嘛,我觉得很难讲,但有资料说在 Zend WinEnabler 的时代,Zend 原来也是建议在 Windows 平台下使用 FastCGI 而不是 IIS ISAPI 或 Apache Module,不过现在 Zend 已经不做这个产品了。

不使用 FastCGI 的理由

  1. 多进程比多线程消耗更多的服务器内存,php-cgi.exe 解释器每进程消耗 7 至 25 兆内存,将这个数字乘以 50 或 100 试试。
  2. 性能。确实有时候多线程 CGI 解释器更快,呵呵,而且有时候,它也很稳定。
分享到:
评论

相关推荐

    fastcgi-2.4.0安装包

    标题中的“fastcgi-2.4.0安装包”指的是FastCGI的2.4.0版本,这是一个软件包,用于在Linux系统中部署和管理FastCGI服务。此版本可能包含了一些性能优化和新的功能特性,以便更好地支持现代Web环境。 描述中提到的...

    fastcgi c++

    fastcgi fastcgi fastcgi fastcgi fastcgi

    FastCGI 下载FastCGI for IIS6下载 1.5(32位&64位)

    **FastCGI技术详解** FastCGI是一种常用于提高Web服务器性能的技术,它作为一个接口,允许Web服务器与外部应用程序(如PHP解释器)进行高效通信。FastCGI的主要优势在于它可以长时间保持活动状态,避免了每次请求都...

    FastCGI SDK

    **FastCGI SDK详解** FastCGI是一种常用于Web服务器上的接口协议,它允许外部程序(如PHP、Perl、Python等脚本语言解释器)作为Web服务器的动态内容生成器,提高了网站性能和响应速度。FastCGI的核心设计目标是避免...

    FastCGI For IIS6.0

    相比之下,FastCGI保持了CGI进程的长期运行,使得多次请求可以复用同一进程,显著降低了进程管理的开销,提高了服务响应速度。 FastCGI for IIS6.0是专为Windows Server 2003上的IIS6.0设计的,它允许IIS服务器与...

    fastcgi头文件和库

    标题中的“fastcgi头文件和库”指的是FastCGI接口的开发资源,这通常包括了C语言编程中使用的头文件(header files)和库文件(library files)。FastCGI是一种常用于Web服务器与应用程序之间通信的协议,它提高了...

    fastcgi中文手册.pdf

    《FastCGI中文手册》是IT领域中关于Web服务器与应用程序接口的重要参考资料,它详细介绍了FastCGI协议的原理、实现以及应用。FastCGI是一种用于提高动态内容生成速度的技术,它通过持久连接来减少每次请求时的启动和...

    Java的FastCGI网关 jFastCGI

    **Java的FastCGI网关 jFastCGI** 在Web开发中,FastCGI(Fast Common Gateway Interface)是一种常用于提高动态网站性能的技术,它允许Web服务器与后端应用程序进行高效通信。jFastCGI是Java平台上的一个实现,它为...

    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_...

    FastCGI手册

    ### FastCGI手册知识点解析 #### 一、FastCGI技术概述 FastCGI是一种用于提高Web应用程序性能的技术,尤其适用于提高动态网页处理的速度。它通过优化传统的CGI(Common Gateway Interface)模型,解决了CGI效率低下...

    FastCGI是什么.txt

    FastCGI是什么.txt

    mod-fastcgi-2.4.6 for apache2.40

    mod_fastcgi是Apache的一个模块,它实现了FastCGI协议,使得Apache服务器能够与FastCGI进程管理器(如spawn-fcgi或fcgiwrap)通信,进而调用动态语言(如PHP、Perl、Python等)的解释器。这个模块提供了比mod_php等...

    用VC++开发FastCGI+MySQL的基本源代码

    在IT行业中,FastCGI(Fast Common Gateway Interface)是一种用于提高Web服务器性能的技术,它能够使Web服务器与外部应用程序(如动态脚本语言解释器)进行高效通信。FastCGI的核心理念是保持进程常驻,避免每次...

    Fastcgi学习总结(C/C++语言版)

    FastCGI是一种高性能的Web服务器接口,它是CGI(通用网关接口)的增强版本,旨在解决传统CGI性能上的问题。FastCGI程序能够长时间运行,而不是每次用户请求时都创建新的进程,从而提高了效率并降低了服务器负载。...

    Fastcgi 中文参考手册(DOC)

    **FastCGI 中文参考手册概述** FastCGI 是一种用于 Web 服务器和应用程序之间通信的协议,它旨在提高网站性能,特别是在处理动态内容时。FastCGI 的设计目标是克服 CGI(Common Gateway Interface)的性能瓶颈,...

    nginx-1.14.0.zip_nginx fastcgi

    在配置Nginx以使用FastCGI时,你需要在Nginx配置文件中定义一个location块,指定哪些URL应该通过FastCGI处理。例如: ```nginx location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/...

    Fastcgi 中文参考手册(DOC).rar

    《FastCGI中文参考手册》是一本专注于FastCGI技术的详细教程,旨在帮助开发者深入理解和有效运用这一高效、稳定的Web服务器接口技术。FastCGI是用于提高动态内容生成速度的一种协议,它允许Web服务器与长期运行的...

    fastcgi 数据发送,跳转 实例

    **FastCGI 数据发送与跳转实例** FastCGI(Fast Common Gateway Interface)是一种协议,用于将Web服务器(如Apache)与外部程序(通常为PHP、Python或Perl解释器)进行通信,以处理动态内容。相比传统的CGI,...

Global site tag (gtag.js) - Google Analytics