我有“文件下载中心”的大型文件(100 2GB 2GB)。
我正在使用PHP。
我的问题是,当强制使用php headers下载文件时,服务器内存消耗很大,尽管我在下载过程中从文件中生成了块,这意味着当5个用户同时下载大文件时,服务器将停止工作。
如何使用户从我的服务器下载大文件没有任何问题。
例如,如果我使用header("location : path/to/files/2GB.zip");,问题就会结束。但这是我不需要的,因为我不需要给用户直接链接到文件的安全性。
什么是解决办法?
发布于 2013-10-16 20:39:08
您可以将文件存储在web路径之外,然后在下载时包含这些文件,使用头函数将其部署到用户。这有点过火了,但效果很好:
$getFiles = fread($FILEHANDLE,$FILESIZE);
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".$FILESIZE."");
header("Content-type: ".$FILETYPE."");
header('Content-Disposition: attachment; filename="'.$FILENAME.'"');
echo $getFiles;在传输文件之前,这会消耗更多的内存,因为在服务器上读取文件时,下载程序将永远不知道文件位于何处。YMMV有很大的文件,原因很明显。
https://stackoverflow.com/questions/18683443
复制相似问题