php readfile在5分钟后崩溃了

时间:2011-11-16 23:29:18

标签: php iis download readfile

这就是我现在所拥有的:

$chunksize = 1024*4;
$h = fopen($file, 'rb');
set_time_limit(600);
while(!feof($h)){
    echo fread($h, $chunksize);
    flush();
}
fclose($h);

我已经尝试增加块大小,我已经尝试重置每次迭代的超时,我已经尝试将超时设置为零(原来是5分钟),我甚至尝试将flush()放在循环外部让它自己的缓冲区处理它,并且每次下载在5分钟内完成。有时它是50.2MB,有时它是54.8或介于两者之间的任何东西,所以我知道它不是文件大小。 php_info()表示最长时间是30秒,所以我可以将它增加到300,但就是这样。

IIS(服务器2003)中是否有可能覆盖它的内容?

2 个答案:

答案 0 :(得分:0)

啊,微软的MVP。每当他们说一些不可能的事情时,你就知道这只是一个挖掘问题。

http://www.murraymoffatt.com/software-problem-0002.html

我能够为这个特定文件提供无限制的运行时间,而不会影响网站的其余部分。

编辑: 看起来这些文章开始消失。

在IIS 5.0(Win2K)中重置FastCGI超时:

  • 启动IIS管理控制台(开始=>设置=>控制面板=> 管理工具=>互联网服务经理)。
  • 在控制台左侧的树中,您应该看到“Internet 信息服务“在最顶层,然后在这个名称下面 你的电脑。右键单击您的计算机名称,然后选择“属性”。
  • 在“主要属性”下是一个列表框;确保这件事 显示“WWW服务”,然后单击“编辑”按钮。
  • 点击“主目录”标签。
  • 单击“应用程序设置”区域中的“配置”按钮。
  • 单击“处理选项”选项卡。
  • 在CGI配置区域中有一个“CGI脚本超时”值 以秒为单位指定。默认值为300秒(5分钟)。
  • 将此值更改为您希望超时的值。
  • 点击每个窗口上的“确定”按钮直到找到为止 回到IIS管理控制台。关闭管理层 控制台。
  • 通过打开命令提示符重新启动IIS(开始=>程序 =>配件=>命令提示符)并输入命令:iisreset

IIS 5.1(WinXP):

  • 打开IIS。
  • 展开计算机名称。
  • 右键单击“网站”,然后选择“属性”。
  • 转到“主目录”标签。
  • 点击“配置”按钮,打开另一个窗口。
  • 转到“处理选项”标签。
  • 按照你的心愿设定。
  • 好的。

以下是IIS 6.0的说明:http://www.iisadmin.co.uk/?p=7 但MetaEdit的下载链接已损坏,请尝试此处:http://support.microsoft.com/kb/301386

答案 1 :(得分:0)

我遇到了同样的问题..

对于任何人来说,这些解决方案都是特定于Windows IIS的

我刚试了2天尝试设置为300秒的每个可能的配置来尝试解决问题。

我更改了配置数据库中的CGITimeout值,但在我的情况下,罪魁祸首证明是FastCGI ini文件(位于c:\windows\system32\inetsrv\fcgiext.ini

有一个设置(以秒为单位):

ActivityTimeout=300

更改此值并重新启动IIS。