number321 发表于 2010-12-21 10:04

ZipArchive当文件多时无法压缩,怎样可以解决呢

我弄了一个打包整个网站的PHP页面,准备备份网站用的

结果发现文件少的时候能正常压缩,文件多的时候就不生效了.

应该不是大小的原因,我试了一下,放一个有700多个文件,总大小是20多M的文件夹进去无法正常压缩
如果只放一个比较大的文件,比如100多M,是可以正常压缩的
而且无论我是否设置
set_time_limit(0);
ini_set('memoryt_limit','-1');
结果都是这样的

这是什么原因呢,怎样解决这个问题呢

number321 发表于 2010-12-21 10:06

内容如下:

<?php
//set_time_limit(0);
//ini_set('memoryt_limit','-1');

$todaytime = date("Y-m-d",time());
$path = ".";
$zipfile = "webbak__".$todaytime.".zip";
$zipPath = "..";

$zip = new ZipArchive;

if (file_exists($zipPath."/".$zipfile))
{
        echo "已存在一个以当天日期命名的备份文件,备份中止";
        exit();
}

if ($zip->open($zipPath."/".$zipfile, ZipArchive::OVERWRITE) === TRUE)
{
        addFileToZip($path, $zip);
}
$zip->close();

function addFileToZip($path, $zip)
{
        $handler = opendir($path);
        while( ($filename = readdir($handler)) !== false )
        {
                if($filename != "." && $filename != "..")
                {
                        if(is_dir($path."/".$filename)&&$path!=".")
                        {
                                addFileToZip($path."/".$filename, $zip);
                        }
                        elseif(is_dir($path."/".$filename))
                        {
                                addFileToZip($filename, $zip);
                        }
                        elseif($path==".")
                        {
                                $zip->addFile($filename);
                        }
                        else
                        {
                                $zip->addFile($path."/".$filename);
                        }
                }
        }
   @closedir($path);
}

echo "备份完成,备份文件名为 ".$zipfile;

?>

number321 发表于 2010-12-21 10:20

我试了一下,不管里面的目录结构是什么样的,总共508个文件的时候就可以压缩,到509个开始就不行了.
页: [1]
查看完整版本: ZipArchive当文件多时无法压缩,怎样可以解决呢