2

IIS (WebMatrix 3.

最初の 15 分間は問題なく動作し、Amazon 商品広告 API にクエリを実行し、出力を一度に 1 行ずつブラウザーにフラッシュして進行状況を表示します。その後、進行状況が表示されなくなります。

問題がスクリプトや Amazon 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>

他の「タイムアウト」値は存在しません。

ところで、IISExpress のせいか、appcmd を実行したり、IIS の設定に GUI でアクセスしたりできません。しかし、applicationhost.config は正常に動作しているようです。

アドバイスをいただければ幸いです。

ジョナサン

4

1 に答える 1

0

サーバー上の IIS-Manager を使用すると、FastCGI 設定を管理できます。activityTimeout (600) と idleTimeout (300) のデフォルトは、正確に 15 分まで加算されます。

それぞれにゼロを追加すると、50 分間のスクリプトが魔法のように完了しました。

于 2016-02-09T13:21:06.180 に答える