PHP创建zip压缩包整站打包

后端开发   发布日期:2023年05月07日   浏览次数:439
  1. function addFileToZip($path, $zip) {
  2.     $handler = opendir($path); //打开当前文件夹由$path指定。
  3.     /*
  4.     循环的读取文件夹下的所有文件和文件夹
  5.     其中$filename = readdir($handler)是每次循环的时候将读取的文件名赋值给$filename,
  6.     为了不陷于死循环,所以还要让$filename !== false。
  7.     一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环
  8.     */
  9.     while (($filename = readdir($handler)) !== false) {
  10.         if ($filename != "." && $filename != ".."  && $filename != "out_zip" ) {//文件夹文件名字为'.'和‘..’,不要对他们进行操作
  11.             if (is_dir($path . "/" . $filename)) {// 如果读取的某个对象是文件夹,则递归
  12.                 addFileToZip($path . "/" . $filename, $zip);
  13.             } else { //将文件加入zip对象
  14.                 $zip->addFile($path . "/" . $filename);
  15.             }
  16.         }
  17.     }
  18.     @closedir($path);
  19. }
  20.  
  21. if ($action=='zip'){  
  22.     ini_set('memory_limit','512M'); 
  23.     set_time_limit(180); 
  24.     
  25.     $path_name="out_zip/web_www.zip";//创建压缩包的路径,在addFileToZip中要排除这个目录,不压缩本身
  26.     if (file_exists($path_name)){
  27.         unlink($path_name);//删除文件
  28.         fopen($path_name, "w");//创建压缩包(为了清空文件)
  29.     }else{
  30.         fopen($path_name, "w");//创建压缩包
  31.     }
  32.     
  33.     $zip = new ZipArchive();
  34.     if ($zip->open($path_name, ZipArchive::OVERWRITE) === TRUE) {
  35.         //dirname(__FILE__)  当前绝对路径
  36.         addFileToZip("./", $zip); //调用方法,对要打包的根目录进行操作,并将ZipArchive的对象传递给方法
  37.         //$zip->addFile("home.php");//也可以不通过addFileToZip()函数,直接添加文件
  38.         //$zip->addFile("Android/index.php");
  39.         $zip->close(); //关闭处理的zip文件
  40.         echo "压缩包压缩成功";
  41.     }else{
  42.         echo "启动失败";
  43.     }
  44. }


以上就是PHP创建zip压缩包整站打包的详细内容,更多关于PHP创建zip压缩包整站打包的资料请关注九品源码其它相关文章!