这是我的代码;
error_reporting(-1);
require("zip_min.php");
$f = $_SERVER['DOCUMENT_ROOT'] ."/mp3/allmp3s.zip";
if (!file_exists($f)) {
$zipfile = new zipfile();
$folder = $_SERVER['DOCUMENT_ROOT'] ."/mp3";
if (is_dir($folder)) {
if($dir = opendir ($folder)) {
while (false !== ($file = readdir($dir))) {
if($file != ".") {
if($file != "..") {
$zipfile -> addFile(file_get_contents($folder."/".$file), $file);
}
}
}
closedir($dir);
$contents = $zipfile -> file();
if (file_put_contents($f, $contents)) {
print "ok";
} else {
print "error creating file";
}
}
} else {
print "error";
}
} else {
print "file already exists";
}
总共有10个mp3文件总大小为100 MB,当我执行这个脚本时,我只得到一个空白页面,没有任何反应。但是它的尺寸为30-40 mb,效果很好。
我该怎么办?
非常感谢
答案 0 :(得分:2)
如果您的zip_min
库在内存中构建了zip,则很可能超出脚本的内存限制(ini_set('memory_limit', 0)
删除它)。如果你经常这样做,可能想看看zip库是否可以在磁盘上构建.zip。每次在大多数服务器上都不得不将100meg数据压入内存中,特别是如果你为多个用户并行执行此操作。
随访:
考虑一下,即使zip_min确实使用了一个临时文件来构建压缩文件,你仍然会使用$contents = $zipfile -> file();
将其插入到内存中,所以你仍然试图耗尽超过100meg的内存无论拉链是如何构建的。