一、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、你无论如何也不能在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解释器更快,呵呵,而且有时候,它也很稳定。
3、CGI?听起来就很土,呵呵
分享到:
相关推荐
[原创] 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_...
针对当前网络地理信息系统(WebGIS)中存在的效率问题和服务器端压力过大的问题,提出了基于FastCGI的多进程、分布式集群的WebGIS构建方案。详细介绍了该方案中服务器端地图服务器的体系结构、功能模块、工作流程以及...
nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册 nginx fastcgi 编译与移植 手册
所以被迫无奈重装服务器,在网上浏览的时候无意的发现PHP5.3的全新特效及改进,原有的ISAPI方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的FastCGI模式,虽说PHP 5.3发布的Windows版已经不支持...
FastCGI 1.5 for IIS6,fastcgi.dll本身不具备解析脚本的能力他的作用是调度php的解析程序处理PHP。内含32位和64位两个版本。
fastcgi.impersonate = 1 cgi.rfc2616_headers = 1 cgi.fix_pathinfo = 1 cgi.force_redirect = 0 upload_tmp_dir =C:/php/temp extension_dir = "C:/php/temp" extension=php_bz2.dll extension=...
fastcgi头文件和库
用于IIS的FASTCGI模块安装包,版本1.5RC
fastcgi fastcgi fastcgi fastcgi fastcgi
Java的FastCGI网关 jFastCGI
刚入门初始化,用VC++开发 FastCGI + MySQL 构建的工程文档,含源代码和MySQL 连接DLL
fastcgi 数据发送,跳转 实例 其它其技术: apache active mq apr curl
软件介绍 Fastcgi 中文参考手册 Tags: Fastcgi 中文参考手册(DOC)
对于配置过程其实比较简单只是纠结于在win32环境下apache 模块 mod_fcgid由于管道问题无法达成,而mod_fastcgi模块则可以达成
mod-fastcgi-2.4.6 支持apache2.40 以上版本
5.注意fastcgi程序编译方式 进入cgi-bin目录中编译方式如下 2228 gcc -o caoft.fcgi echo.c -lpthread -lfcgi 2229 gcc -o caoft.fcgi size.c -lpthread -lfcgi 2230 gcc -o caoft.fcgi threaded.c -lpthread -...
安装完成后要开php功能找到安装目录下的php.ini配置就是,安装整合的时候只需要在某一步骤所示的界面选择IIS FastCGI(前提是安装iis的时候选择了FastCGI),所以为了保险起见安装IIS服务器的时候还是把所有的选中吧。
需要在IIS6.0下配置PHP,由于php 5.3.3已经不再支持isapi配置了,因此需采用fastcgi方式配置
IIS7 PHP MySQL FastCgi 配置过程,全面直接,文档中用到的软件也很简单,让你轻轻松松就完成了IIS PHP MySQL 的环境配置
FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,...