fread into while循环 - 无法清除输出缓冲区

时间:2015-03-27 17:14:45

标签: php

我正在下载这样的大文件:

$fd = fopen($url, "r");

while(!feof($fd))
{
    echo fread($fd, 4096);
    ob_flush(); 
    flush();
}

但我有一个问题 - 文件只下载到11,6 MB并停止... 哪里有问题?我使用ob_flush和flush,所以我认为 - 它应该有效。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您只想输出远程文件,则不需要fread()循环。您可以使用:

readfile($url);

那就是它。但是,您显示的脚本也应该可以正常工作。原因必须是远程服务器。

如果下载时间过长,您应该考虑将执行时间设置为无限制:

set_time_limit(0);

...在你的剧本之上。