2013-11-01 24 views
1

我想在Windows Server上压缩50K文件的大文件夹。我目前使用这个代码:使用PHP在Windows Server上压缩大目录

include_once("CreateZipFile.inc.php"); 
$createZipFile=new CreateZipFile; 

$directoryToZip="repository"; 
$outputDir="."; 
$zipName="CreateZipFileWithPHP.zip"; 

define("ZIP_DIR",1); // 


if(ZIP_DIR) 
{ 
//Code toZip a directory and all its files/subdirectories 
$createZipFile->zipDirectory($directoryToZip,$outputDir); 
}else 
{ 
//? 
} 

$fd=fopen($zipName, "wb"); 
$out=fwrite($fd,$createZipFile->getZippedfile()); 
fclose($fd); 
$createZipFile->forceDownload($zipName); 
@unlink($zipName); 

一切工作正常,直到2K左右的图像文件。但这不是我想要得到的。我愿意至少处理像50K图像的压缩文件。同时我的剧本得到这个错误:

Fatal error: Maximum execution time of 360 seconds exceeded in C:\xampp\htdocs\filemanager\CreateZipFile.inc.php on line 92

$newOffset = strlen(implode("", $this->compressedData)); 

我在寻找的任何解决方案进行文件的如此巨大的数额。我目前在Windows Server 2008 Standard上使用XAMPP。是否有可能使小部分的拉链,使用系统命令,也许外部工具来打包它们,然后将其发送到标题下载?

http://pastebin.com/iHfT6x69为CreateZipFile.inc.php

+0

考虑使用像Gearman这样的设置工作服务器。 – halfer

+0

听起来很不错,但是设置起来对我来说可能很难:( – user2945583

+0

)为什么?让自己成为一个VPS,它可以用一些命令来安装,如果你不知道怎么做,那么你可以学习;这是值得学习的技术 – halfer

回答

0

试试这个..增加执行时间

ini_set('max_execution_time', 500);

500号OS秒将其更改为任何你lilke

+0

这不是我为什么会让某人在网站上等待那么长时间。它应该可能以某种方式在“后台”运行:并且500代码对于此代码来说是不够的。 – user2945583

+0

据我所知,在php中没有“在后台”。如果你想继续使用PHP,你可以看看[cron jobs](http://en.wikipedia.org/wiki/Cron),它允许你定期执行某些任务。这可能仍然需要@Zeedias解决方案(如果它工作:P)。 – atomman

+0

你可以让5000.但无论如何,用户必须等待服务器响应。即使你运行代码的背景。这一切都取决于你的机器。 – Zeedia

0

你需要一个较小的文件或一个快速提供的文件? 为快速服务没有压缩和没有内存泄漏,你可以尝试使用系统命令与zip压缩软件,如gzip和压缩。

这些文件可能会变得很大,但会作为一个文件快速提供。

+0

任何可以在它上面工作的东西。需要多长时间? – user2945583

+0

我搜索,几乎找不到任何gzip脚本打包你有1可能吗? – user2945583

+0

尝试是这样的: 您的服务器上安装GnuZip 运行: 系统(“路径/到/ gzip的-1 nameofdirectory”,$ RETVAL) 有了这个,你将你的目录中的文件打包到一个.GZ文件 GNUZip的其他参数在帮助中已有详细记录。希望这会帮助你。 –