通过PHP隧道传输链接数据?

时间:2014-02-06 18:09:56

标签: php tunnel

我希望能够转到mydoma.in/tunnel.php?file=http://otherdoma.in/music.mp3,然后将http://otherdoma.in/music.mp3的数据流式传输到客户端。

我尝试通过Header();执行此操作,但重定向而不是“调整”数据。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

使用cURL进行流式传输:

<?php

$url = $_GET["file"];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_BUFFERSIZE, 256);

curl_exec($ch);
curl_close($ch);

?>

答案 1 :(得分:0)

让您的PHP脚本提取远程内容:

$data = file_get_contents($remote_url);

然后吐出来:

echo $data;

或者简单地说:

echo file_get_contents($remote_url);

您可能需要添加一些标题来指明内容类型。

或者,您可以使用nginx等配置代理 - 这将允许您将特定URL重写为远程站点,然后将其作为本地服务,无需编码。

答案 2 :(得分:0)

如果它们很小,您可以使用file_get_contents()。否则,您应该使用cURL。您可能希望从get变量“file”中获取URL。然后使用PHP将其保存到本地临时位置。然后,使用header()将自己定向到本地文件。删除临时文件是唯一的问题,因为没有办法确定何时完成下载。因此,您可以睡眠或延迟文件删除,但您可能会发现使用cron作业以后清理所有临时文件是更好的选择。