php遍歷一個資料夾並壓縮到zip
Php程式碼
private function zip($path,$zipFile){ $zip=new ZipArchive(); $zip->open($zipFile,ZipArchive::CREATE);//创建一个空的zip文件 $this->addFileToZip($path,$zip); } private function addFileToZip($path,ZipArchive $zip,$root=''){ if(!is_dir($path)){ return false; } if(!$root){ $root= $path; } if(strpos($path,$root)!==0){ $root= $path; } $handler=opendir($path); //打开当前文件夹由$path指定。 while(($filename=readdir($handler))!==false){ if($filename != "." && $filename != ".."){//文件夹文件名字为'.'和‘..’,不要对他们进行操作 if(is_dir($path."/".$filename)){// 如果读取的某个对象是文件夹,则递归 $this->addFileToZip($path."/".$filename, $zip,$root); }else{ //将文件加入zip对象 $filenameWithPath = $path."/".$filename; $localFileName = substr($filenameWithPath,strlen($root)); $zip->addFile($filenameWithPath,$localFileName); } } } @closedir($handler); }
使用yield重構程式
程式碼執行碼zipFolder-delay:1.6427090167999|zip- delay:1.6077039241791
|zipFolder-delay:1.32648620147620147142021.1463201472032121320321230302132230203213203203203203:20202012.12.1. 2
|zipFolder-delay:1.6917150020599|zip-delay:1.6022040843964|zipFolder-delay:1.6297070980072| zip-delay:1.7262189388275
|zipFolder-delay:1.5997030735016|zip-delay:1.5892019271851
使用後用