【发布时间】:2013-05-03 22:39:06
【问题描述】:
这是 StackOverflow 上反复出现的问题,我浏览所有现有建议均未成功。
这是我想要实现的目标:
- 访客来到我的网页,我必须向他发送一个非常大的文件以供下载。
- 该文件位于远程服务器上,需要基本身份验证或 Cookie。只有我拥有 cookie/凭据。
- 我成功地使用 wget 下载了该文件,然后通过 X-sendfile mod (Apache) 将其提供给访问者,但在下载之前需要等待最终用户。
- 我想尽快提供下载服务,这意味着我的网站会充当某种代理或其他东西。
- 我尝试使用带有 cURL、fsockopen/feof 等的一堆代码,但要么它几乎不时使 Apache 崩溃,要么它是一个阻塞连接(访问者只要他还没有完成下载就不能再浏览网站),要么它是破坏我的资源,因为我猜 php 试图将那个巨大的文件放入内存中。
总结一下:
- 我应该能够尽快为远程文件提供下载服务
- 理想情况下,逐块/按范围提供服务?
额外信息:PHP 5.2.13、Gentoo、libcurl 5.2.13
【问题讨论】:
-
我很惊讶这样一个不寻常的要求是一个反复出现的问题。通常,您只需使用远程服务器或远程服务器上的脚本来提供这样的文件,而不是通过将相同的文件从一台服务器发送到另一台服务器来将这个非常大的文件的带宽使用量增加三倍,只是从那一秒发送出去一。重新考虑您的架构似乎是一个更明智的解决方案
-
我想隐藏远程服务器 + 我有无限带宽。
标签: php file stream readfile fsockopen