【问题标题】:Access file while it's still being downloaded (Linux)在文件仍在下载时访问文件 (Linux)
【发布时间】:2016-10-13 00:15:37
【问题描述】:

我正在尝试使用 PHP 归档一个大文件并将其发送到浏览器以供下载。问题是该文件位于远程计算机上,获取它的唯一方法是通过 HTTP。所以想象这是我的文件:https://dropboxcontent.com/user333/3yjdsgf/video1.mp4 这是一个直接链接,我可以使用 wget 下载文件,或者 curl 任何东西。当用户想要下载它时,我首先将文件获取到服务器,然后将其压缩然后发送给用户。好吧,如果文件真的很大,用户必须坐在那里等待服务器下载它,然后才能在浏览器中看到下载对话框。有没有办法让我开始下载文件https://dropboxcontent.com/user333/3yjdsgf/video1.mp4(假设我将它下载到本地/tmp/video.mp4)并同时开始放入存档并将其流式传输到用户的浏览器中?

我正在使用这个库来压缩它:https://github.com/barracudanetworks/ArchiveStream-php,效果很好,但瓶颈仍然是获取文件到服务器的本地文件系统。

这是我的代码:

$f = file_get_contents("https://dropboxcontent.com/user333/3yjdsgf/video1.mp4"); $zip->add_file('big/hello.mp4', $f);

如果文件真的很大,问题是$f = file_get_contents("https://dropboxcontent.com/user333/3yjdsgf/video1.mp4"); 行需要太长时间。

【问题讨论】:

标签: php curl streaming wget ziparchive


【解决方案1】:

正如Touch Cat Digital Inc 原帖的 cmets 所建议的,我在这里找到了答案:https://stackoverflow.com/a/6914986/1927991

远程文件的分块流就是答案。很聪明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2015-05-29
    • 2012-04-29
    • 2015-06-30
    • 2017-08-06
    • 2020-07-17
    相关资源
    最近更新 更多