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)可以工作。
因为进程在创建的时候CPU时间片、内存调度、IO访问消耗最多,所以FastCGI类似于常用的池技术。即预先创建好进程,等待请求。执行完成后,进程并不结束,而是返回池中。不过,按道理,这些进程执行到一定次数后,也会全部销毁再重新建立一次。
一、IIS6.0以isapi方式加载php环境并测试
我准备了一个phpinfo的页面,保存成abu.php
<php?
phpinfo();
?>
注意看我标注出来的,Server API
- 最新评论