使用PHP压缩Windows服务器上的大目录

使用PHP压缩Windows服务器上的大目录,php,zip,windows-server,Php,Zip,Windows Server,我想在Windows Server上压缩一个包含50K个文件的大文件夹。我目前正在使用以下代码: include_once("CreateZipFile.inc.php"); $createZipFile=new CreateZipFile; $directoryToZip="repository"; $outputDir="."; $zipName="CreateZipFileWithPHP.zip"; define("ZIP_DIR",1); // if(ZIP_DIR) { //C

我想在Windows Server上压缩一个包含50K个文件的大文件夹。我目前正在使用以下代码:

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的图像。同时,我的脚本出现以下错误:

致命错误:第92行的C:\xampp\htdocs\filemanager\CreateZipFile.inc.php中超过了360秒的最大执行时间

我正在寻找任何解决方案来处理如此大量的文件。我目前在WindowsServer2008标准上使用XAMPP。有并没有可能制作拉链的一小部分,使用系统命令或者外部工具将其打包,然后发送到header下载


对于CreateZipFile.inc.php,请尝试以下内容。。增加执行时间

ini\u集('max\u execution\u time',500)


500是操作系统秒数将其更改为您喜欢的任何数字

您需要较小的文件还是快速送达的文件? 为了实现无压缩和无内存泄漏的快速服务,您可以尝试将system命令与zip之类的zip软件结合使用,并将压缩设置为


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

事实并非如此,为什么我会让某人在网站上等待那么久。它可能会以某种方式运行“在后台”:s,当然500s对于这段代码来说是不够的。但是,如果您想继续使用PHP,您可以研究它,它允许您定期执行某些任务。这可能仍然需要@Zeedias解决方案(如果它有效的话:P)。但无论如何,用户必须等待服务器响应。即使您在后台运行代码。这一切都取决于你的机器。那么cron jobs呢?有什么例子吗,我的朋友?我正在考虑为这个过程制作一个弹出窗口。这件事真让我恶心:(我在这个问题上需要一个赏金。考虑用一个像Grimman之类的东西来建立一个工作服务器。听起来不错,但是设置起来对我来说很难:(为什么?给自己一个VPS,它可以安装几个命令。如果你不知道怎么做,那么你可以学习;这是一个值得学习的技术。好的,考虑到Grman是否在那里工作?是的,这就是为什么我建议它<代码>:)/>代码。Grman作为后台程序(后台进程)运行。如果你有一个合适的zip库,你可以读取一个百分比的zip,这个百分比可以作为工作人员向Gearman报告进度,在你的在线应用程序中,你可以(a)启动作业,(b)检查作业状态,和(c)看看完成作业的百分比。它很健壮,上面有很多文档。我用它来渲染文档和抓取web—这是在线应用程序中做不到的。我搜索了一下,几乎找不到任何用于打包的gzip脚本。你可能有1个吗?试试这样的方法:在服务器上安装GnuZip运行:系统('path/to/gzip-1 nameofdirectory',$retval)使用此选项,您可以将目录中的文件打包为一个.gz文件。GNUZip的其他参数在帮助中有很好的文档记录。希望这会对您有所帮助。如何使用它?系统('gzip',$retval)我从来没有在system u中使用过这样的命令,比如在console/bat中向系统写入命令这些命令不会使用php的任务/线程它们自己运行,也不会使用php gzip的内存您必须单独安装,然后从php运行它会处理您的zip文件不确定它会有多大我正在使用node.js使用的php以前,但从来没有压缩过那么多文件,只有几个…不喜欢phpI安装节点的响应时间,配置得很好,我认为,当我键入cmd$npm install adm zip时,它会显示我…为什么?
$newOffset = strlen(implode("", $this->compressedData));