Heim  >  Artikel  >  Backend-Entwicklung  >  windows-server - php+iis6.0+mysql+windows server 2003 总是导致应用地址池奔溃停止运行?

windows-server - php+iis6.0+mysql+windows server 2003 总是导致应用地址池奔溃停止运行?

WBOY
WBOYOriginal
2016-06-06 20:49:571233Durchsuche

先描述一下大前提:

服务器使用的是 windows server 2003 + iis6 + mysql + php[isapi模式] 进行配置的,并且站点上有13个虚拟站点,其中 4个站点为纯PHP脚本站点,其他是asp或者 asp.net 站点,所以服务器并不是那么纯净。

现在问题是,

在这4个PHP站点中,一个是dzx!2.5搭建的社区系统(A),一个是使用jishigou搭建的微博平台(B),一个是使用ucenter搭建的用户中心(C),最后一个位自己写的程序(D)。

以上A、B、C、D创建站点时,均自有程序应用地址池分别对应为:A1,B1,C1,D1;

在流量和IP均为发生大变动的情况下,站点A的A1应用地址池总是无故假死,但其他站点B、C、D都可正常访问,需要手动回收和释放当前A1,甚至都无法正常启动World Wide Web Publishing Service服务。登录服务器上看,总会弹出这个提示(如下图):

windows-server - php+iis6.0+mysql+windows server 2003 总是导致应用地址池奔溃停止运行?

以上错误信息均在php + iis + isapi模式下运行;

倘若,更换php的运行模式为fastcgi,则不会出现以上情况,但是fastcgi的线程数总会提示满,于是需要开启更大的线程以此解决。

最后,站点A使用的dzx!2.5为原生系统,前端并未修改,修改的为后台。

回复内容:

先描述一下大前提:

服务器使用的是 windows server 2003 + iis6 + mysql + php[isapi模式] 进行配置的,并且站点上有13个虚拟站点,其中 4个站点为纯PHP脚本站点,其他是asp或者 asp.net 站点,所以服务器并不是那么纯净。

现在问题是,

在这4个PHP站点中,一个是dzx!2.5搭建的社区系统(A),一个是使用jishigou搭建的微博平台(B),一个是使用ucenter搭建的用户中心(C),最后一个位自己写的程序(D)。

以上A、B、C、D创建站点时,均自有程序应用地址池分别对应为:A1,B1,C1,D1;

在流量和IP均为发生大变动的情况下,站点A的A1应用地址池总是无故假死,但其他站点B、C、D都可正常访问,需要手动回收和释放当前A1,甚至都无法正常启动World Wide Web Publishing Service服务。登录服务器上看,总会弹出这个提示(如下图):

windows-server - php+iis6.0+mysql+windows server 2003 总是导致应用地址池奔溃停止运行?

以上错误信息均在php + iis + isapi模式下运行;

倘若,更换php的运行模式为fastcgi,则不会出现以上情况,但是fastcgi的线程数总会提示满,于是需要开启更大的线程以此解决。

最后,站点A使用的dzx!2.5为原生系统,前端并未修改,修改的为后台。

不建议用isapi方式,建议使用 http://www.iis.net/download/FastCGI

C:\WINDOWS\system32\inetsrv\fcgiext.ini内容仅供参考

<code>[Types]
php=PHP

[PHP]
ExePath=D:\php\php-cgi.exe
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
</code>

php.ini中几个关键点仅供参考

<code>output_buffering = On
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
</code>

php.ini中的安全考虑

<code>disable_functions = system,passthru,shell_exec,exec,popen,proc_open
enable_dl = Off
</code>

php.ini中尽量设置独立的临时目录等

<code>upload_tmp_dir = "d:/tmp/uploadtemp/"
session.save_path = "d:/tmp/sessiondata/"
date.timezone = "Etc/GMT-8" ; GMT+8
mbstring.language = Neutral ; Set default language to Neutral(UTF-8) (default)
mbstring.internal_encoding = UTF-8 ; Set internal encoding to UTF-8
</code>

建议在windows平台使用线程安全的php,建议所有php站点使用同一个程序应用池。

如果有可能,别在windows平台跑php。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn