IIS6下PHP的ISAPI和FastCGI性能比较 期待ii7

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的方法。

isapi的最大缺点在于不稳定,程序故障容易引起整个web服务器崩溃。
国外的一个评测,在Windows IIS 6下,FastCGI性能并不如ISAPI,但在IIS 7下则性能优秀。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/10906.html

(0)
晴川运维晴川运维
上一篇 1天前
下一篇 1天前

相关推荐

  • IIS 环境下配置PHP5+MySql+PHPMyAdmin

    首先说明一下配置环境: 操作系统:windows 2003 standard sp2 PHP版本:5.2.5 mysql版本:5 PHPMyAdmin:2.11.6 一、…

    IIS 2025年6月20日
  • Win2003 IIS6.0性能优化指南

    问:好多asp.net程序,放在一台服务器上,客户端连接使用一段时间后,在服务器上打开任务管理器一看,发现有很多w3wp.exe,占用内存很大,达到1g,请问为什么会这样?有什么办…

    IIS 6天前
  • 解决IIS中应用程序池提供服务的进程无法响应Ping或进程关闭时间超过了限制

    1.错误系统日志:为应用程序池 ‘DefaultAppPool’ 提供服务的进程无法响应 Ping。进程 ID 是 ‘2144’。 …

    IIS 2025年6月8日
  • 不错的一篇3389使用相关技巧

    3389肉鸡快捷键 CTRL+ALT+END 把“任务管理器”抓出来   CTRL+ALT+BREAK这个就是切换全屏显示。  CTRL+ALT+EN…

    IIS 2025年6月4日
  • win2003+IIS下安装Xcache加速的配置方法分享

    在论坛后台看了半天,只有内存优化一个还没有做,但是自己以前又没有弄过,只有学了。 论坛支持Memcache、eAccelerator、Alternative PHP Cache(A…

    IIS 2025年6月15日
  • 提高IIS网站服务器性能2点考虑(缓存+gzip)

    一、利用缓存,即内容过期 对于静态文件启用内容过期可以提高访问性能。首先网站的目录要划分合理,图片、CSS、JavaScript均放在单独目录下,然后在IIS中选择目录,点属性-H…

    IIS 2025年6月21日
  • iis7.5 gzip时有时无的解决方法

    IIS7中开启了gzip后,工作机制是如果访问次数在规定的时间内没有超过多少次,就不启用gzip,那么如何解决这个问题呢? 运行下面两条命令即可。 复制代码 代码如下: %wind…

    IIS 2天前
  • 轻松架设Windows 2003用户隔离FTP站点的注意事项

    架设FTP站点似乎已经不是什么困难的事情了,我们不需要借助任何外来工具的帮忙,只需要使用Windows服务器系统自带的IIS功能,就能轻易地架设一台FTP站点了。不过,用这种方法架…

    IIS 2025年6月8日
  • jpg 木马如何执行 如何防止.JPG类型木马?

    .net木马目前很强的, 此木马是一个.NET程序制作,如果你的服务器支持.NET那就要注意了,,进入木马有个功能叫:IIS Spy ,点击以后可以看到所有站点所在的物理路径。以前…

    IIS 2025年6月16日
  • IIS 学习笔记

    1.问题:在iis上发布一个站点,在本地可以访问,在别的机器不能访问。 对策:确认IIS所在机器的防火墙是否关闭,如果没有,关闭防火墙试试。当然最好的办法是修改防火墙的配置,不是让…

    IIS 2025年6月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注