IIS6下配置fastcgi模式的php5.3.6高级进阶
FastCGI的优化配置
FastCGI优化配置文件fcgiext.ini,它在%windir%\system32\inetsrv里。我们将尝试用两种办法进行配置:FastCGI管理脚本fcgiconfig.js;记事本编辑fcgiext.ini。
脚本配置FastCGI
打开你的命令行cmd.exe,切换到目录 %windir%\system32\inetsrv。复制下面内容,回车执行以下即可完成。请根据需要设置后面的参数。
1
|
cscript
fcgiconfig.js -set -section: "PHP" -InstanceMaxRequests:5000
|
2
|
3
|
cscript
fcgiconfig.js -set -section: "PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:5000
|
4
|
5
|
cscript
fcgiconfig.js -set -section: "PHP" -RequestTimeout:360
|
6
|
7
|
cscript
fcgiconfig.js -set -section: "PHP" -ActivityTimeout:120
|
脚本的含义,分别是:
- 设置应用程序池回收。FastCGI进程请求数达到InstanceMaxRequests数值5000,应用程序池将自动回收。默认值是1000。
- 当环境变量PHP_FCGI_MAX_REQUESTS达到10000将自动回收应用程序池。
- RequestTimeout 设置请求超时时间,也就是请求允许的最大时间,如果FastCGI进程请求超过此设置将被禁止,值是90秒。
- ActivityTimeout 指定FastCGI进程请求的最大活跃时间,在设定时间内,FastCGI进程和IIS没有通信,将终止进程。默认值是70秒。
注意:脚本命令是全局设置,针对服务器上所有以FastCGI运行的PHP网站。因此对于多站点的虚拟机来说,InstanceMaxRequests设置成PHP网站数X500相对理想。
500是变数。如果有10个网站,那么200X50=5000,类推。流量大的服务器,数值设置过小频繁回收应用程序池,并不是什么明智的做法。——虽然,系统回收了不少资源。
RequestTimeout数值过大,无疑将让更多消耗系统资源的请求运行;ActivityTimeout设置为120秒不活动就断开好,还是30秒不活动就断开好,因人而异。
复制粘贴适合懒人
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=360
ActivityTimeout=120
把上面代码复制到fcgiext.ini的末尾,保存就好了。
PHP5.3.6的优化配置
PHP5.3.6的php.ini配置也分为两部分:关于FastCGI的配置;关于PHP本身的配置。我的PHP5.3.6安装在C:\PHP。
PHP.ini关于FastCGI部分
fastcgi.impersonate = 1
cgi.fix_pathinfo=1
cgi.force_redirect = 0
它们的说明,请参考cgi.force-redirect;cgi.fix-pathinfo;fastcgi.impersonate。
PHP.ini关于自身的部分
一、搜索extension_dir,去掉前面注释“;”,修改成:
1
|
extension_dir
= "c:/php/ext"
|
二、搜索date.timezone,去掉前面注释“;”,修改成:
1
|
date.timezone
= "asia/shanghai"
|
三、搜索下面,然后去掉前面的注视“;”
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
如此这般你的PHP基本可以畅通无阻了。至于一些更高级的修改,我们没有必要研究那么深,不是吗?