在我的网站上,用户可以输入文件链接,我可以通过我的服务器将下载过程流式传输给他们。我使用这样的系统:
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: ' . $r[2]);
header('Content-Disposition: filename=' . $theName);
flush();
$file = fopen($fileName, "r");
while(!feof($file))
{
print fread($file, 10240);
flush();
sleep(1);
}
fclose($fileName);
我认为,我的用户下载速度非常慢(600kb / s)。托管的服务器位于1Gbit端口上,因此它们应该将其互联网连接最大化十倍。
我想知道是否有更好的方法来做这种事情,也许是cURL?我对cURL没有太多经验,但我很感激任何反馈。
感谢。
答案 0 :(得分:2)
使用readfile。
如果你坚持你的方法,那么这种方式会更有效率,没有同花顺和睡眠:
while(!feof($file)) {
print fread($file, 10240);
}
原因如下:
答案 1 :(得分:1)
我不确定你在这里尝试做什么..不明白为什么你需要那个循环而且特别不明白为什么你需要睡眠()..你应该只使用readfile或类似的东西而不是那个循环,它会非常有效
另外您认为curl对您有何帮助?
答案 2 :(得分:1)
如果不是@Sabeen Malik指出的一秒睡眠(),则很可能是由于您的网络提供商施加的服务器端限制(例如使用mod_throttle或mod_bandwidth)或您正在提取的网络提供商数据来自。