在IIS上15分钟后挂起的PHP脚本

时间:2013-10-13 18:48:19

标签: php iis timeout iis-express applicationhost

我有一个长期运行的PHP脚本,在IIS上运行(通过WebMatrix 3安装IISEXpress。

前15分钟它工作正常,查询亚马逊产品广告API,一次将输出刷新到浏览器一行以显示其进度。然后它停止显示任何进展。

我很确定问题不在于脚本或亚马逊API,因为它每次都会达到不同的进度点,但总是在15分钟内停止(我在脚本中有时间并且已经过了时间刷新到浏览器中的页面。)

为了防止脚本在30秒后因错误而中止,我设置了:

set_time_limit(36000); in the script

我听说IIS可能在15分钟后出现CGI超时,并尝试将CGI行添加到ApplicationHostConfig以覆盖任何默认超时。没效果。

   <location path="myAmazonScript">
        <system.webServer>
            <cgi createCGIWithNewConsole="true" createProcessAsUser="false" timeout="00:20:00" />
            <handlers>
                <remove name="PHP54_via_FastCGI" />
                <add name="PHP via FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\iis express\PHP\v5.4\php-cgi.exe" responseBufferLimit="0" resourceType="Either" />
            </handlers>
        </system.webServer>

(如果您想知道,我将ResponseBufferLimit设置为0以强制执行刷新。)

在system.webserver部分的其他地方,我们有:

<cgi />
<fastCgi>
    <application fullPath="C:\Program Files (x86)\iis express\PHP\v5.4\php-cgi.exe" monitorChangesTo="php.ini" activityTimeout="600" requestTimeout="600" instanceMaxRequests="10000">
        <environmentVariables>
            <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
            <environmentVariable name="PHPRC" value="C:\Program Files (x86)\iis express\PHP\v5.4" />
        </environmentVariables>
    </application>
</fastCgi>

不存在其他“超时”值。

顺便说一下,我无法运行appcmd或通过GUI访问IIS设置,大概是因为是IISExpress。但是applicationhost.config似乎运行正常。

任何建议都非常感谢。

乔纳森

1 个答案:

答案 0 :(得分:0)

服务器上的IIS-Manager允许您管理FastCGI设置。 activityTimeout(600)和idleTimeout(300)的默认值最多相加15分钟。

我为每个人添加了零,我的50分钟剧本就像一个魅力。