【发布时间】:2011-10-18 12:02:15
【问题描述】:
我有一个下载脚本,它会检查几项内容,然后以 8kb 的大小流式传输文件。
执行传输的循环如下所示:
$file = @fopen($file_path,"rb");
if ($file) {
while(!feof($file)) {
set_time_limit(60);
print(fread($file, 1024*8));
flush();
if (connection_status()!=0) {
@fclose($file);
die();
}
}
@fclose($file);
}
我编写了一个模拟下载速度非常慢的小应用程序。在继续下载之前等待 2 分钟。鉴于我设置了 60 秒的时间限制,我预计脚本会超时。这不会发生,下载会一直持续到完成。似乎打印/刷新所花费的时间不计入脚本执行时间。这个对吗?有没有更好的方法将文件发送到客户端/浏览器,以便我可以为打印/刷新命令指定时间限制?
【问题讨论】:
标签: php download timeout flush