【发布时间】:2011-10-18 09:34:19
【问题描述】:
我有一个 200MB 的文件,我想通过下载提供给用户。但是,由于我们希望用户只下载此文件一次,因此我们这样做:
echo file_get_contents('http://some.secret.location.com/secretfolder/the_file.tar.gz');
强制下载。但是,这意味着必须将整个文件加载到内存中,这通常是行不通的。我们如何将这个文件以每块一些 kb 流式传输给他们?
【问题讨论】:
-
使用
stream_copy_to_stream(fopen('file.ext', 'rb')), STDOUT)将流通过管道传输到标准输出。如果您的默认缓冲区大小需要调整,请使用stream_set_chunk_size($fp, $size)