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 は正常に動作しているようです。
アドバイスをいただければ幸いです。
ジョナサン