它山之石可以攻玉

键盘上的生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

IIS6.0环境下支持PHP的FastCGI扩展

Posted on 2011-11-17 16:06  陈达辉  阅读(632)  评论(0编辑  收藏  举报

在IIS6.0环境下安装PHP5.3.2时选择IIS FastCGI 选项会提示版本过低.需要升级到IIS7.0下才可!
但IIS7.0无法在WIN2003环境下部署,因此,在这里我们要使IIS6.0支持FastCGI,以便于安装PHP5.3.2;那么我们就需要在服务器上安装FastCGI!我们需要下载支持IIS6.0的FastCGI扩展包.
1.在服务器上打开下面网址运行Microsoft Web 平台安装程序:
http://www.microsoft.com/web/gallery/install.aspx?appsxml=&appid=PHP%3bPHP%3bPHP
下载插件,然后安装。
2.再重新刷新打开上面的网址,启动加载程序!会弹出WEB平台(如下图),在上面我们勾选web服务器/自定义/应用程序开发/FastCGI1.0,下一步直至FastCGI安装完成;

PS:有关FASTCGI的官方说明文档:
http://www.iis.net/articles/view.aspx/IIS7/Hosting-Web-Applications/PHP/Configuring-FastCGI-Extension-for-IIS6-0-


IIS 6.0和IIS 5.1安装FastCGI 1.5扩展包
在扩展包的主页http://www.iis.net/expand/fastcgi下载FastCGI扩展包1.5的安装包进行安装。and-IIS5-?Page=1

IIS6.0以FastCGI模式加载php环境的测试

很多人都在Windows平台用IIS来跑PHP环境。如果在网络上检索一下的话,就会发现,目前IIS+PHP环境有3种方法。

1、CGI方式加载PHP环境,通常就是IIS里面配置解释器为php.exe,早期比较常见,目前使用较少。
  
特点是:稳定,但效率太低。

2、ISAPI方式加载PHP环境,通常就是IIS里面配置解释器为php5isapi.dll,目前使用最多,应用最广。
  
特点是:多线程,效率较高,但不够稳定。

3、FastCGI方式加载PHP环境,在IIS环境里并不常见,但其它系统环境应用还是有的,不过IIS7.0开始内置FastCGI了。
  
特点是:高效率,高稳定性,属于将来发展趋势。


今天我给大家介绍的是第三种,也就是最不常见的IIS6.0以FastCGI模式加载php环境。据说相同配置下FastCGI方式加载PHP比ISAPI方式加载PHP性能提高很多,今天我的重点就放在IIS6.0以FastCGI模式加载php环境的测试,看看究竟性能是不是提升了。

当然我的理由也很充分,我没有足够好的服务器,所以我要榨干服务器的资源,如果确实FastCGI的性能更好,那我就赚了:)

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

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 1.0版,1.5测试版或1.5 RC版,安装程序包会将它升级到1.5 – RTW。所有在fcgiext.ini文件中与IIS配置和设置相关的数据将在升级过程保留。请注意,在从1.0版升级的过程中,fcgiext.ini中的注释将不被更新。无论如何,新的设置仍然可以在升级后使用。

早在2006年,微软就和Zend等厂商一起研发Windows Server下的优化工作,IIS产品组已经公布了IIS6和7的FastCGI扩展,它能让PHP执行效率更高.

新功能
FastCGI 1.5扩展包的新功能:

·         监测文件的变化。扩展包可以配置为侦听特定文件的改变,扩展包将在进程池中回收FastCGI的进程。此功能可用于当php.ini文件修改时回收PHP进程。

·         实时调整MaxInstances设置。这MaxInstances设置决定了最大数量的FastCGI进程,可为每个应用程序池启动。如果它被设置为0,那么FastCGI扩展包将每隔几秒自动调整实例数增加或减少系统的负载和处理排队的请求。

·         STDERR的流处理。在STDERR有几个选项是扩展包如何处理FastCGI应用程序发送的文本。扩展包可以发送错误数据到一个失败响应的HTTP客户端,也可以忽略该错误并对任何在STDOUT上收到的文件发送一个200状态代码作为回应。

·         对FastCGI进程发送终止信号。扩展包可以配置为在中止FastCGI的进程前,给它发送一个终止信号。这使FastCGI的进程在被中止前可以完全关闭。

·         _FCGI_X_PIPE_环境变量。这个变量值由FastCGI扩展包设置,这个名字包含了是扩展包和FastCGI进程沟通管道的名字。

·         不严格执行应答报头。FastCGI扩展包不严格的执行应答报头。

·         每个应用程序的FastCGI进程池。在以前版本的扩展包中,FastCGI的进程池可以界定为整个IIS服务器或每个IIS站点。在FastCGI 1.5版本中,也可以为每个IIS应用程序界定FastCGI进程池,它允许有两个不同版本的PHP用于同一网站的不同应用进程。

·         服务器变量值使用UTF - 8码。默认情况下的FastCGI使用ASCII码设置服务器变量。如果FastCGI应用程序需要的UTF - 8码作为某些服务器变量的值,扩展包可以为需要服务的服务器变量配置UTF – 8码。

·         更多解释错误的语句在fcgiext.ini配置不正确时被使用

·         配置设置的默认值改变。 MaxInstances现在设置为0,这样实时调整MaxInstances是能在默认情况下进行的。 ActivityTimeout设置为70秒。

另外,如果您使用扩展包出现任何问题时或有任何问题或建议。请务必访问IIS.NET的 FastCGI的处理程序论坛

下载地址:

32位下载:http://www.iis.net/Downloads/files/fastcgi/GoLive/fcgisetup32.msi

64位下载:http://www.iis.net/Downloads/files/fastcgi/GoLive/fcgisetup64.msi

 

IIS6.0下PHP FastCGI环境搭建
FastCGI是可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性等。

今天介绍一下IIS6.0下PHP FastCGI环境搭建,一些资料称IIS下FastCGI的运行效率是ISPAI的两倍之多。不管到底怎么样,如果您还停留在ISAPI的运行环境下的话,一定要先测试再使用。免得造成不必要的麻烦。

第一步:下载安装FastCGI Extension for IIS

下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=2d481579-9a7c-4632-b6e6-dee9097f9dc5&displaylang=en

 


安装后确认IIS中,Web 服务扩展 – FastCGI Handler处于打开状态;

第二步:注册PHP到FastCGI

打开 C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件:

在文件最下方 [Types] 下添加以下配置:
[Types]
php=PHP

[PHP]
ExePath=C:\PHP\php-cgi.exe

注:ExePath这个路径为存放PHP文件夹的路径;

第三步:配置php.ini

主要是以下两项,其它的按个人需要进行配置:

extension_dir = “C:\PHP\ext”
fastcgi.impersonate = 1

第四步:配置IIS支持

右键网站 -> 属性 -> 主目录 -> 配置 -> 添加,如下图配置:



可执行文件路径:C:\WINDOWS\system32\inetsrv\fcgiext.dll

最后:重启IIS;

cmd–iisreset;

phpinfo();

Server API CGI/FastCGI

OK!

http://www.360doc.com/content/11/0520/17/3040000_118179125.shtml