从站点下载巨大的文件,并使用php动态流式处理-速度非常低

从站点下载巨大的文件,并使用php动态流式处理-速度非常低,php,wget,popen,Php,Wget,Popen,首先我很抱歉,我的英语不是很流利。 我想通过我的服务器从另一个站点向用户传输几个大文件。现在我使用wget和popen() 但当我直接在服务器上尝试时,传输速率在30-60 kb/s之间波动: wget www.somsite.pl/file.tmp :我有大约500kb/s P>我应该怎样做才能得到更好的传输速率?? < P>你可以考虑使用它与WGET/POPON组合相比有很好的性能。 或者只发送带有URL的HTTP 302 启动wget并将其输出与popen连接的效果不如使用fsockop

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

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

wget www.somsite.pl/file.tmp

:我有大约500kb/s

<> P>我应该怎样做才能得到更好的传输速率??

< P>你可以考虑使用它与WGET/POPON组合相比有很好的性能。

或者只发送带有URL的HTTP 302


启动wget并将其输出与popen连接的效果不如使用fsockopen直接连接的效果。

标题中缺少
Content Length
。添加
标题('Content-Length:1024')服务器和您之间的最大带宽是多少?例如,如果它是数据中心中的托管服务器,而您使用的是标准DSL线路,那么服务器与“大”文件的带宽连接将比您与服务器或直接与“大”文件的带宽连接要高得多。但我想要流的文件在我的服务器上不存在,我不想将它们保存在磁盘上。我需要一些东西来“即时”提供此文件,而不将其保存在服务器上。您看到的代码来自:我不能使用302重定向:/In future我需要添加cookies处理。我想要的:但是为什么要使用wget呢?fsockopen/file函数有URL包装器。这不必是wget,没有wget我不知道怎么做。我试过这样的方法:php脚本:
$c=curl_init()
curl\u setopt($c,CURLOPT\u URL,myurl)
curl\u setopt($c,CURLOPT\u RETURNTRANSFER,true)
curl\u exec($c)
curl\u close($c)
然后使用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);