如何解决:FastCGI进程超出配置的请求超时错误:在IIS 7.5上

时间:2014-04-18 06:39:35

标签: php iis

我的PHP脚本在我的服务器IIS 7.5上执行一些程序 浏览器需要花费大约10分钟的时间执行,但错误大于正确 如何解决这个问题。

错误:

HTTP Error 500.0 - Internal Server Error
C:\php\php-cgi.exe - The FastCGI process exceeded configured request timeout  

Module  FastCgiModule
Notification    ExecuteRequestHandler
Handler FastCGI
Error Code  0x80070102

php.ini设置:

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0  

max_execution_time = 0
upload_max_filesize = 20M
memory_limit = 128M
post_max_size = 30M

C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config fast-cgi的文件设置

<fastCgi>
<application  
fullPath="C:\php\php-cgi.exe" activityTimeout = "3600" requestTimeout = "300" />
</fastCgi>

3 个答案:

答案 0 :(得分:4)

我从这个source找到了另外一个设置,帮助我解决了我遇到的同样问题。 复制并粘贴:

打开服务器管理器

在服务器级别(非默认网站)

  • 双击“FastCGI设置”
  • 打开那里列出的PHP.EXE
  • 监控对文件php.ini的更改
  • 活动超时默认值为60秒 - 更改为600秒或其他

答案 1 :(得分:3)

这是对正在发生的事情的快速解释。当您使用PHP的CGI / FCGI配置时。 Web服务器(在本例中为IIS)将需要php处理的请求路由到PHP进程(与Web服务器分开运行)。

通常,为防止连接被卡住打开并等待(如果php进程发生崩溃),Web服务器只会等待一段时间让PHP进程返回结果(通常为30-60秒)。 / p>

在您的配置中,您有:

requestTimeout = "300"

300秒= 5分钟。 IIS将取消​​请求,因为您的请求需要10分钟才能完成。简单修复,将超时增加到600或更高。

现在,使用http请求运行脚本10分钟并不是一个好的设计模式。通常,http最适合短期请求。原因是进程的任何部分(服务器,代理或客户端)都可能存在超时,并且脚本可能会被意外中断。

因此,当您的Web应用程序具有这样的长时间运行作业时,运行它的最佳方式是通过控制台或作业队列。

答案 2 :(得分:0)

这可以通过调整fast-cgi配置来解决。 转到&#34; C:\ Windows \ System32 \ inetsrv \&#34; 并修改&#34; fcgiext.ini&#34; 文件

[PHP]
ExePath=C:\xampp\php\php-cgi.exe
MonitorChangesTo=C:\xampp\php\php.ini
ActivityTimeout=3600
IdleTimeout=3600
RequestTimeout=3600

确保放置ActivityTimeout,IdleTimeout&amp;在[PHP]部分中的RequestTimeout,如上所示。