3

数分間実行される php スクリプトがあります。サーバー上に小さな (2 ~ 20K) ファイルを大量 (最大 10000) 作成します。

何らかの理由で、約 90 秒後に、常に 500 内部サーバー エラーが発生します。php.ini の問題かもしれないと思ったので、いくつかの値を編集しました。

max_execution_time = 1000
max_input_time = 1000
default_socket_timeout = 1000
memory_limit = 400M
post_max_size = 100M
file_uploads = On
upload_max_filesize = 100M

また、phpinfo() を使用してこれらの新しい設定が行われたかどうかを確認したところ、有効になっていることがわかりました。

スクリプトを機能させるために他に何ができる/変更できますか?

PHP5.5 Windows Server 2008 R2、SP1、残念ながら、物理メモリは 600 MB しかありません errors_log に何もありません。

4

2 に答える 2

4

他の人の髪を救うことを願って(私はこれでほとんど自分の髪を抜いた)

解決策は、FastCGI アクティビティのタイムアウトを増やすことです。IIS 7 コマンド ライン ツールであるappcmd
を 使用して、IIS 構成 XML ファイルを変更します。

管理者モードでcmdを実行します。

現在の設定を確認するには、次を使用します。

%windir%\system32\inetsrv\appcmd list config -section:system.webServer/fastCgi

アクティビティ タイムアウトを追加するには (CGI の場所が C:\php\php-cgi.exe であると仮定します):

%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='C:\php\php-cgi.exe'].activityTimeout:600

この出力は次のようになります。

<system.webServer>
<fastCgi>
<application fullPath="C:\PHP\php-cgi.exe" activityTimeout="600" instanceMaxRequests="10000">
<environmentVariables>
<environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
</environmentVariables>
</application>
</fastCgi>
</system.webServer>
于 2013-07-24T03:38:49.363 に答える
3

回答投稿のコマンドは機能しませんでした。

これは正しいものです:

C:\Windows\System32\inetsrv>appcmd set config -section:system.webServer/fastCgi "-[fullPath='C:\Program Files (x86)\PHP\v5.2\php-cgi.exe'].activityTimeout:3600"

二重引用符に注意してください。http://www.bokko.nl/increase-fastcgi-php-activitytimeout-in-iis7/へのクレジット

于 2013-09-10T22:10:13.463 に答える