这是 StackOverflow 上反复出现的问题,我浏览所有现有建议均未成功。
这是我想要实现的目标:
- 访问者来到我的网页,我必须向他发送一个非常大的文件以供下载。
- 该文件位于远程服务器上,需要基本身份验证或 Cookie。只有我拥有 cookie/凭证。
- 我成功地使用 wget 下载了该文件,然后通过 X-sendfile mod (Apache) 将其提供给访问者,但它需要在下载前等待最终用户。
- 我想尽快提供下载服务,这意味着我的网站会充当某种代理或其他东西。
- 我尝试使用带有 cURL、fsockopen/feof 等的一堆代码,但要么它几乎不时使 Apache 崩溃,要么它是一个阻塞连接(只要他还没有完成下载,访问者就不能再浏览网站),要么它是破坏我的资源,因为我猜 php 试图把那个巨大的文件放在内存中。
所以总结一下:
- 我应该能够尽快提供远程文件以供下载
- 理想情况下逐块/按范围提供它?
额外信息:PHP 5.2.13、Gentoo、libcurl 5.2.13