php - 让访问者下载一​​个远程文件,chunk by chunk(range)

时间:2013-05-09 12:41:48

标签: php file stream readfile fsockopen

这是关于StackOverflow的一个反复出现的问题,我浏览了所有现有的建议都没有成功。

这是我想要实现的目标:
- 访问者访问我的网页,我必须向他发送一个非常大的文件供下载 - 该文件位于REMOTE服务器上,需要Basic Auth或Cookie。只有我拥有cookie /凭证 - 我成功设法使用wget下载该文件,然后通过X-sendfile mod(Apache)将其提供给访问者,但它需要在下载之前等待最终用户。
- 我想尽快提供下载服务,这意味着我的网站会像某种代理或某种东西一样 - 我尝试使用cURL,fsockopen / feof等一堆代码,但要么它偶尔会崩溃Apache,要么是阻塞连接(访问者只要他还没有完成下载就不能浏览网站),要么就是因为php试图将那个巨大的文件放入内存中,所以我想要破坏我的资源。

总结一下:
- 我应该能够尽快为远程文件提供服务 - 理想地按块/范围按范围提供块大小?

额外信息:PHP 5.2.13,Gentoo,libcurl 5.2.13

2 个答案:

答案 0 :(得分:0)

根据大块发送它需要某种类型的洪流解决方案。

答案 1 :(得分:0)

我有同样的问题,但我无法解决它。

但是我确信你可以使用一些东西。我没有,因为我认为它是脏编码,但由于你很匆忙,或者是10个月前(!),我可以建议你this

Glype代理脚本,是一个功能强大的基于php的代理。

  • 安装
  • 转到 admin.php?设置
  • 启用热链接
  • 可能必须禁用Gzip压缩
  • 停用 SSL警告
  • 停用缓存
  • 检查 恢复转移 (重要)

这些都是我能想到的,试试这个,然后发送 $_POST['u']includes/process.php?action=update

它应该工作。如果我测试过,我会告诉你结果......

希望它有所帮助。