从网站下载巨大的文件,并使用PHP动态流式传输 - 非常低的速度

时间:2012-09-25 08:31:13

标签: php wget popen

首先,我很抱歉,但我的英语不是很流利。 我想通过我的服务器从另一个站点向用户传输几个巨大的文件。现在我正在使用那个wget和popen()

$plik = "http://test.mm.pl/100.tmp"; // text file for test - 100 MB
header('Content-Type: application/exe');
header('Content-disposition: attachment; filename="'.basename($plik).'"');
header('Content-Transfer-Encoding: binary');

$fp = popen('wget -qO- '.$plik, 'r');

$bufsize = 1024; // 8192, 4096 i've tried many options
$buff = '';
while( !feof($fp) ) {
   $buff = fread($fp, $bufsize);
   echo $buff;
   flush();
}
pclose($fp);

但传输速率在30-60 kb / s之间振荡:/当我在服务器上直接尝试时:

  

wget www.somsite.pl/file.tmp

:我有~500kb / s

我该怎么做才能获得更好的传输速率?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用sendfile,与wget / popen组合相比,它具有良好的性能。

或只是发送带有网址的HTTP 302

启动wget并使用popen连接它的输出比使用fsockopen直接连接效率低。