在服务器PHP上压缩文件问题

时间:2010-04-22 14:00:26

标签: php

这是我的代码;

 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,效果很好。

我该怎么办?

非常感谢

1 个答案:

答案 0 :(得分:2)

如果您的zip_min库在内存中构建了zip,则很可能超出脚本的内存限制(ini_set('memory_limit', 0)删除它)。如果你经常这样做,可能想看看zip库是否可以在磁盘上构建.zip。每次在大多数服务器上都不得不将100meg数据压入内存中,特别是如果你为多个用户并行执行此操作。

随访:

考虑一下,即使zip_min确实使用了一个临时文件来构建压缩文件,你仍然会使用$contents = $zipfile -> file();将其插入到内存中,所以你仍然试图耗尽超过100meg的内存无论拉链是如何构建的。