php yield初體驗,遞歸遍歷資料夾並壓縮

巴扎黑
發布: 2016-11-10 09:23:34
原創
1822 人瀏覽過

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.6132049560547|zip-delay:1.6287071704865 

|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 

使用後用

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板