PHP 脚本运行 90 秒后出现内部服务器错误 500

Flo*_*011 3 php iis timeout

有一个运行几分钟的 php 脚本。它在服务器上创建大量(最多 10000 个)小文件(2-20K)。

由于某种原因,大约 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
Run Code Online (Sandbox Code Playgroud)

我还检查了使用 phpinfo() 是否发生了这些新设置,并且发现它们确实生效了。

为了使我的脚本正常工作,我还可以做/更改什么?

PHP5.5 Windows Server 2008 R2, SP1,不幸的是,只有 600 MB 物理内存,errors_log 中没有任何内容。

Flo*_*011 5

希望能拯救其他人的头发(我在这根头发上拔掉了自己的大部分头发)

解决方案是增加 FastCGI 活动超时。
使用IIS 7 命令行工具appcmd修改 IIS 配置 XML 文件。

以管理员模式运行cmd 。

要检查当前设置,请使用:

%windir%\system32\inetsrv\appcmd list config -section:system.webServer/fastCgi
Run Code Online (Sandbox Code Playgroud)

添加活动超时(假设 CGI 位置为 C:\php\php-cgi.exe):

%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='C:\php\php-cgi.exe'].activityTimeout:600
Run Code Online (Sandbox Code Playgroud)

现在的输出应该类似于:-

<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>
Run Code Online (Sandbox Code Playgroud)