Categories


Tags


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

来源:月光博客


Public @ 2020-04-30 15:47:23

利用安全组设置拦截外网访问服务器某个端口

要拦截外网访问服务器的某个端口,可以通过安全组设置来实现。以下是一些步骤供参考: 1. 登录云提供商的控制台,找到所需的服务器实例并进入安全组设置界面。 2. 在安全组设置界面中,点击添加规则或类似选项。 3. 在规则设置中,选择入方向或出方向,具体取决于你想要拦截的流量方向。 4. 选择协议类型,通常是 TCP 或 UDP。 5. 填写端口范围,指定你想要拦截的端口号。如果只想拦截单个

Public @ 2023-07-31 05:50:25

RDS相关帮助

RDS是Amazon Web Services(AWS)提供的一种托管关系型数据库服务。它可以帮助您快速、轻松地设置、运行和扩展关系型数据库,并提供可扩展性、高可用性、安全性和维护性等方面的优秀性能。以下是一些可帮助您使用RDS的帮助: 1. AWS文档:AWS提供全面的RDS文档,以便您快速入门和使用该服务。文档涵盖所有方面,从创建数据库实例到管理安全性和性能。 2. AWS支持:如果您在使

Public @ 2023-06-02 01:50:26

IIS7关于多域名多证书多IP的部署方案

1. 添加多个域名和IP地址: 在IIS7管理工具中,选择“站点”并右键单击属性,然后选择“网站”选项卡。在“站点域名”下添加需要托管的域名,再在“站点绑定”下添加欲绑定的IP地址。 2. 添加多个SSL证书: 在IIS7管理工具中,选择“服务器证书”并右键单击证书管理器,选择“导入”选项并选择欲导入的SSL证书。 3. 为每个域名配置SSL证书: 在每个域名下的“SSL设置”中,选择欲使用的

Public @ 2023-04-09 17:51:09

IIS 7.0 遇到Http 错误 404.17 Not Found 解决办法

当IIS 7.0遇到Http错误404.17 Not Found时,这表示服务器上没有启用所请求的文件类型的相应模块。 解决办法如下: 1. 打开IIS管理器,并定位到出错的网站或应用程序。 2. 双击“模块”功能视图,然后找到“静态文件”模块。如果该模块已禁用,请右键单击并选择“启用”。 3. 如果“静态文件”模块已启用,但仍然出现问题,请右键单击“静态文件”模块并选择“还原默认模块”。

Public @ 2023-07-28 19:00:34

更多您感兴趣的搜索

0.396776s