有一个运行几分钟的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
我还使用phpinfo()检查了这些新设置是否发生,并看到它们确实生效了。
为了让我的剧本发挥作用,我还能做什么/更改什么?
PHP5.5Windows Server 2008 R2、SP1、,遗憾的是,只有600 MB的物理内存errors_log中没有任何内容。
希望能拯救别人的头发(我在这件事上几乎拔出了自己的头发)
解决方案是增加FastCGI活动超时
使用appcmd(IIS 7命令行工具)修改IIS配置XML文件。
在管理员模式下运行cmd。
要检查当前设置,请使用:
%windir%system32inetsrvappcmd list config -section:system.webServer/fastCgi
添加活动超时(假设CGI位置为C:\php\php-CGI.exe):
%windir%system32inetsrvappcmd set config -section:system.webServer/fastCgi /[fullPath='C:phpphp-cgi.exe'].activityTimeout:600
这个输出现在应该类似于这个:-
<system.webServer>
<fastCgi>
<application fullPath="C:PHPphp-cgi.exe" activityTimeout="600" instanceMaxRequests="10000">
<environmentVariables>
<environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
</environmentVariables>
</application>
</fastCgi>
</system.webServer>
应答帖中的命令对我不起作用。
这是正确的:
C:WindowsSystem32inetsrv>appcmd set config -section:system.webServer/fastCgi "-[fullPath='C:Program Files (x86)PHPv5.2php-cgi.exe'].activityTimeout:3600"
注意双引号。信用额度http://www.bokko.nl/increase-fastcgi-php-activitytimeout-in-iis7/