IIS6如何查看PHP运行模式是isapi和cgi限制还是CGI

使用ZendCore+IIS运行PHP
使用ZendCore+IIS运行PHP选项说明
操作系统:使用windows 2003 server位系统IIS6。windows 2008 server 32位系统IIS7。
ZendCore版本:官方下载版本。
ZendCore的PHP运行在系统的IIS服务中。
按以下步骤安装ZendCore。目录指定到C:\Program Files\Zend\Core\。安装中选择IIS,并选择已经在IIS中添加好的winmail的站点:Webmail
修改C:\Program Files\Zend\Core\etc\php.ini文件。
修改以下四项值:
post_max_size = 160M
upload_max_filesize = 120M
error_reporting
E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
时区设置: PRC or Asia/Hong_Kong
date.timezone = PRC
在extension=php_pgsql.dll行和extension_dir="C:\Program Files\Zend\Core\lib\phpext"行的中间新加如下:
extension=php_ftp.dll
extension=php_sqlite.dll
extension=php_pdo_sqlite.dll
按以下的检查IIS中的PHP调用是否正常。
webmail站点的“属性”--“主目录”--“配置”--检查“.php”的配置是否正常存在。
Windows 2003的IIS 6如下:
Windows 的IIS 7如下:
IIS 6中检查web扩展服务--“PHP”是否为“允许”并且指向是zendcore的目录。
IIS 7中检查ISAPI和CGI限制中是否允许
如果上面的两处调用没有或者不正确,可以自行再指定一次,调用路径为:
C:\Program Files\Zend\Core\modules\isapi\zend_fcgi.dll
64位的系统注意zendcore安装后默认是使用64位的路径如下:
C:\Program Files\Zend\Core\modules\isapi64\zend_fcgi.dll
注意检查路径是32位还是64位,并且检查以下选项保证对应。
配置IIS应用程序池,在对应站点的应用程序池->高级设置->允许32位应用程序 修改为true就是使用32位。False就是使用64位。
重启IIS服务:
在系统控制面板--管理工具--服务中找到IIS admin服务重启,
也可以使用命令行运行命令重启。
如果你的用户多的话,要修改一下 C:\Program Files\Zend\Core\etc\fastcgi.conf
StartProcesses="8" 值改为 32,最大为63
PHP_FCGI_CHILDREN=1 值改为 10
MinDynamicServers 8 改为 32
MaxDynamicServers 16 改为 64
不然并发不够,默认只有 8 个并发进程 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
CGI FASTCGI ISAPI区别
下载积分:400
内容提示:CGI FASTCGI ISAPI区别 09:42一CGI原理及..
文档格式:PDF|
浏览次数:55|
上传日期: 13:20:55|
文档星级:
该用户还上传了这些文档
CGI FASTCGI ISAPI区别
官方公共微信IIS6.0环境下FastCGI和ISAPI模式php性能测试
TA的每日心情奋斗 14:25签到天数: 45 天[LV.5]常住居民I
主题帖子积分
单身公寓, 积分 436, 距离下一级还需 64 积分
单身公寓, 积分 436, 距离下一级还需 64 积分
本帖最后由 天空の城 于
09:42 编辑
很多人都在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模式配合eAccelerator加速器,牺牲少部分内存可以大大减少CPU的使用量,网站在大量的请求量的时候,WEB也不能很快就崩溃,关于eAccelerator加速,本文不再叙述,大家可以搜索下教程。
什么是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)可以工作。
因为进程在创建的时候CPU时间片、内存调度、IO访问消耗最多,所以FastCGI类似于常用的池技术。即预先创建好进程,等待请求。执行完成后,进程并不结束,而是返回池中。不过,按道理,这些进程执行到一定次数后,也会全部销毁再重新建立一次。
一、IIS6.0以isapi方式加载php环境并测试
我准备了一个phpinfo的页面,保存成abu.php
phpinfo();
根据phpinfo的页面显示的Server API的值可知当前加载的php环境。&&
Server API:ISAPI表明目前服务器是IIS+ISAPI方式加载的PHP环境。
Server API:CGI/FastCGI表明目前服务器是CGI/FastCGI加载的PHP环境。
下面进行最简单的压力测试:
我用apache里面内置的ab.exe进行最简单的压力测试:
ab -n 1000 -c 20 http://192.168.0.6/abu.php
这句话的意思是模拟出总共1000个网站请求,并发20个请求,访问服务器http://192.168.0.6/abu.php 页面
根据服务器上的截图(图略),注意,我们可以发现,服务器的CPU已经窜至80%左右。
好的,下面开始第二个阶段,换FastCGI
二、IIS6.0以FastCGI方式加载php环境并测试
IIS下可用的FastCGI扩展有很多种,我在这里给大家演示的是微软官方发布的扩展。
【下载】/downloads/details.aspx?FamilyID=2da7c--dee&displaylang=en
安装之后,默认是安装到%WINDIR%\system32\inetsrv路径下,当然直接拆出来用也可以。
没有图形界面,可以直接写配置文件或者通过官方配的fcgiconfig.js文件进行配置。
还是用上面的方法进行简单的压力测试
根据服务器上的截图(图略),我们可以发现,基本上CPU的消耗在30-40%左右。
三、ISAPI和FastCGI两种模式对比测试的结果
根据上面的简单测试,我们可以发现,相同硬件环境下,FastCGI方式加载PHP环境比ISAPI方式加载PHP性能提高约1倍。
把服务器换成FastCGI方式加载PHP了,性能有了明显的提高。又可以继续压榨可怜的服务器,心里十分开心。
[url=/t/]苗疆蛊事[/url]
使用 (可批量传图、插入视频等)快速回复2870人阅读
php一共分为五大运行模式:包括cgi 、fast-cgi、cli、isapi、apache 模块的 DLL
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。
CGI方式在遇到连接请求(用户 请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi 方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内 存,CPU时间等,造成效能低下。
fast-cgi 是cgi的升级版本,FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一 次。PHP使用PHP-FPM(FastCGI Process Manager),全称PHP FastCGI进程管理器进行管理。
FastCGI的工作原理
1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
4、 FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。
在上述情况中,你可以想象CGI通常有多慢。每一个Web 请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的 好处是,持续数据库连接(Persistent database connection)可以工作。
APACHE2HANDLER
PHP作为Apache模块,Apache服务器在系统启动后,预先生成多个进程副本驻留在内存中,一旦有请求出 现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计 算机中等待下次请求。对于客户浏览器的请求反应更快,性能较高。
apache模块的DLL:
该运行模式是我们以前在windows环境下使用apache服务器经常使用的,而在模块化(DLL)中,PHP是与Web服务器一起启动并运行的。(是apache在CGI的基础上进行的一种扩展,加快PHP的运行效率)
ISAPI即Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口
一个ISAPI的DLL,可以在被用户请求激活后长驻内存,等待用户的另一个请求,还可以在一个DLL里设置多个用户请求处理函数,此外,
ISAPI的DLL应用程序和WWW服务器处于同一个进程中,效率要显著高于CGI。(由于微软的排他性,只能运行于windows环境)
cli是php的命令行运行模式,大家经常会使用它,但是可能并没有注意到(例如:我们在linux下经常使用 “php -m”查找PHP安装了那些扩展就是PHP命令行运行模式;有兴趣的同学可以输入php -h去深入研究该运行模式)
每种运行模式都有自己的优缺点,没有绝对的好与坏,主要是看大家处理何种环境。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:139438次
积分:1102
积分:1102
排名:千里之外
转载:43篇
评论:20条
(2)(1)(5)(1)(4)(10)(7)(6)(8)(16)(2)当前位置:>正文
win8系统中iis8与php运行环境整合
永恩说 浏览:
昨天说了。php的环境也很配置,只需要下载PHPNow、Wamp&Server等php环境搭建工具,可快速配置php运行环境。只不过这样以来再用IIS的话就显得不太方便了。需要修改IIS端口才能运行。为此,有些需要运行php语言外的情况时(asp、.net),就要用到iis。于是php、iis整合到一起就显得有必要了。由于我对php开源程序也有看,再者此站用的是zblog。都需要本地测试,而我用系统又是win8,不自觉的就想把iis8与php整合。这样以在iis管理器中可以方便管理网站。我也抱着试试的态度,结果真弄成了。在windows2003中我用php5&for&IIS6环境集成安装包解决了iis和php整合的问题。所以我想用它在win8中试试。不过虽然出了些意外,最后还是成功了。只是需要稍微手动一下。php5&for&IIS6环境集成安装包软件介绍:一键安装,无需手动添加应用程序扩展。让你快速搭建PHP运行的环境。整个安装包仅向C盘写入一个php.ini文件,我是相当讨厌在服务器(个人电脑)c盘乱加载东西(php采用添加path的方式,方便升级)。:整个安装包可以自动识别你所安装的路径,建议安装在c盘以外的目录。安装过程中自动添加php环境变量,不用重启服务器,自动添加了php的web服务。首先,把iis8安装,之后再运行php5&for&IIS6环境集成安装包。安装时根据提示即可。php5安装成功能后打开iis管理器。找到&ISAPI和CGI限制&、“处理程序映射”打开看看里面是否有PHP字样。如果没有手动添加。ISAPI和CGI限制如果没有,可以在右边点击添加或者在空白处右击添加弹出“编辑ISAPI或CGI限制”对话框,如下图。ISAPI或CGI路径填写你电脑上的路径,描述任意,一定要勾选“允许执行扩展路径”。处理程序映射打开编辑脚步映射,如下图。按照下图填写,可执行文件路径写你的。设置完成后,可以试一试。时间久了我也不太清了。貌似只有这两处麻烦些吧。建站点默认文档要添加index.php默认没有这项,要不然运行不了php。补一下昨天写的运行asp需要设置一些,打开iis管理器找到asp,打开,找到“行为”中“启用父路径”把Flase改成True。如有问题。可留言。php5&for&IIS6环境集成安装包2.0&下载
除非注明否则永恩说均为原创
转载请注明出处!
&&( 21:22:31)&&( 16:40:45)&&( 11:14:43)&&( 16:9:5)&&( 13:9:17)&&( 15:33:40)}

我要回帖

更多关于 iis7 isapi和cgi限制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信