1

首先我很抱歉,但我的英语不流利。我想通过我的服务器将几个大文件从另一个站点流式传输给用户。现在我正在使用那个 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

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

4

1 回答 1

0

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

或者只是发送带有 URL 的 HTTP 302

启动 wget 并使用 popen 连接它的输出不如使用 fsockopen 直接连接有效。

于 2012-09-25T08:38:41.487 回答