我使用下面的代码来创建和下载大型zip文件。文件夹包含大量文件,大约20000到30000个文件。总文件大小平均为2GB。此代码适用于小文件,但如果是超过10000个文件的情况,则服务器会在几分钟内无响应。
<?php
$folder= "../path/";
header('Pragma: no-cache');
header('Content-Description: File Download');
header('Content-disposition: attachment; filename="myZip.zip"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
chdir( $folder );
$fp = popen('zip -r -0 - ' . $folder, 'r');
while(!feof($fp)) {
echo fread($fp, 8192);
}
//Closing the stream
pclose($fp);
?>
感谢。