【问题标题】:How to address : The FastCGI process exceeded configured request timeout error: on IIS 7.5如何解决:FastCGI 进程超出配置的请求超时错误:在 IIS 7.5 上
【发布时间】:2014-06-02 15:35:54
【问题描述】:

我的 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>

【问题讨论】:

  • 那么你是如何解决这个问题的?您是同时增加(activityTimeout 和 requestTimeout)还是只增加其中之一?

标签: php iis


【解决方案1】:

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

通常,为了防止连接卡在打开和等待(如果 php 进程发生崩溃),Web 服务器只会等待 PHP 进程返回结果的设定时间(通常为 30-60 秒)。

在你的配置中你有这个:

requestTimeout = "300"

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

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

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

【讨论】:

  • 我更改了 requestTimeout = "1000" 并且脚本需要 5.5 分钟才能运行。但同样的错误。我在运行之前重新启动了服务器。看来如果我的用户希望我的应用程序处理更大的文件,我最好使用控制台或作业队列。但我不知道怎么做。
  • 您有任何错误记录吗?你之前没有提到文件上传,可能还有其他事情在起作用。
  • 处理文本文件。我通过 php 调用 perl 脚本并运行 perl 以将文件分发给用户。文件上传正常(我在我的根文件夹中获取这些文件)这意味着文件大小或类型没有错误。
  • 你已经开始了,沿着工作队列路线走下去。出现此错误,您是否在 php.ini 中启用了 display_errors?如果错误没有写入日志,您应该能够在屏幕上看到它。
【解决方案2】:

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

打开服务器管理器

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

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

【讨论】:

    【解决方案3】:

    这可以通过调整 fast-cgi 配置来解决。 转到 "C:\Windows\System32\inetsrv\" 并编辑 "fcgiext.ini" 文件

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

    确保将 ActivityTimeout、IdleTimeout 和 RequestTimeout 放在 [PHP] 部分中,如上所示。

    【讨论】:

    • 我在那个位置找不到那个文件。我能够通过 IIS->FastCGI Settings->Edit->Process Model 进行相同的配置更改
    猜你喜欢
    • 2020-01-14
    • 2021-08-07
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    相关资源
    最近更新 更多