月光博客

青青子衿, 悠悠我心, 但为君故, 沉吟至今

« Google Trends和Google InsightsFirefox 3.5正式版发布 »

IIS下PHP的ISAPI和FastCGI比较

  在Windows IIS 6.0下配置PHP,通常有CGI、ISAPI和FastCGI三种配置方式,这三种模式都可以在IIS 6.0下成功运行,下面我就讲一下这三种方式配置的区别和性能上的差异。

  1、CGI(通用网关接口/Common Gateway Interface)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。这样,当用户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。

  2、ISAPI(Internet Server Application Program Interface)是微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。

  在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的“WEB服务扩展”中,添加一个新的WEB服务扩展,程序后缀为PHP,ISAPI程序为php5isapi.dll,然后再“环境变量”-“系统变量”中增加变量名PHPRC,数值为php.ini的路径,在Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映射”Tab页。点击“添加...”,在“可执行文件”设为: c:\php\php5isapi.dll,扩展名设为.php,选择“确认文件是否存在”,然后“确定”保存设置。重启服务器即可完成PHP的配置。

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

  FastCGI已经集成于IIS7,也支持IIS6,在IIS6中的安装方法可参见微软的官方文档,我这里简单翻译一下。

  先点这里下载一个32位的FastCGI extension for IIS,然后将其安装,安装后的文件应该放到system32\inetsrv目录下。

  之后打开system32\inetsrv目录,执行下面的语句,其中c:\php为你的PHP目录,可以修改为其他数值。

  cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"c:\php\php-cgi.exe"

  在Internet信息服务管理器中,选择网站或应用程序的根目录,打开目录属性页(右键选择“属性”),再选择“主目录”。点击“配置”按钮,选择“映射”Tab页。点击“添加...”,在“可执行文件”设为: c:\windows\system32\inetsrv\fcgiext.dll,扩展名设为.php,选择“确认文件是否存在”,然后“确定”保存设置。

  修改php.ini文件,增加如下语句:

  fastcgi.impersonate = 1
  cgi.fix_pathinfo = 1
  cgi.force_redirect = 0

  之后打开system32\inetsrv目录,执行以下语句:

  cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
  cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

  最后,配置c:\php目录的安全性,使得IIS_WPG组对于这个目录有读取和执行的权限。

  这时候,基于FastCGI的PHP就成功配置到IIS6上了。

  不过根据我自己的测试,FastCGI的性能比ISAPI的好像高不了多少,不知道Windows Server 2008下的IIS7是不是会好一些。这里是微软提供的基于内置FastCGI的IIS7安装PHP的方法。



原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/1846.html
  • 文章排行:
  • 2.蔡晓东
  • 在看你和萧秋水、秋叶写的那本书,感觉浅显了一点。不过还是很有收获的。
  • ip: 59.56.125.*  2009-6-29 23:02:51   回复该留言
  • 5.TaoGOGO
  • 通常我使用FastCGI的,它稳定而且速度快!
  • ip: 222.134.129.*  2009-6-29 23:16:30   回复该留言
  • 8.逍遥君
  • 月光,发现你的GGAD只显示赛门铁克这一个网站,已经持续一段时间了。
    dev 于 2009-6-29 23:36:32 回复
    feedback
  • ip: 219.236.96.*  2009-6-29 23:26:22   回复该留言
  • 11.ayanamist
  • 我记得我看过国外的一个评测,在Windows IIS 6下,FastCGI性能并不如ISAPI,但在IIS 7下则性能优秀。
  • ip: 202.114.128.*  2009-6-30 0:58:08   回复该留言
  • 15.神仙
  • isapi的最大缺点在于不稳定,程序故障容易引起整个web服务器崩溃。


  • ip: 58.246.74.*  2009-6-30 9:45:39   回复该留言
  • 20.gg
  • 月光以前不是google的广告么,怎么换成百度推广了啊。google不能用只是暂时滴~~要坚定。。
  • ip: 58.241.93.*  2009-6-30 12:31:43   回复该留言
  • 21.jack
  • 我一个日发贴1万多的论坛,FastCGI模式跑起来很快,但是有时候会出现FastCGI异常,刷新一下又不会了,后来又改回用PHP ISAPI了;
  • ip: 116.5.159.*  2009-6-30 13:39:14   回复该留言
  • 25.飘香茶叶
  • 月光,发现你的GGAD只显示赛门铁克这一个网站,已经持续一段时间了。
  • ip: 121.32.209.*  2009-7-3 18:02:24   回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 跟随我的推特:跟随我的推特
  • 跟随新浪微博:跟随新浪微博
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过电子邮件订阅本站

站内搜索

热文排行

最新评论及回复

最近发表

网站收藏

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.