nuxodin: große datenmengen zippen

Beitrag lesen

hallo

bei neueren php-Versionen gibt es die Klasse "ZipArchive" allerdings kann die nicht von Haus aus ganze Ordner zippen.

Desshalb habe ich da mal die Klasse erweitert:

  
class superZipArchive extends ZipArchive {  
 public function open($filename, $flags = null){  
  $this->qgFilename = $filename;  
  return parent::open($filename, $flags);  
 }  
 public function addDir($dir, $localname = null, $regexpExclude = null){  
  if($localname === null){ $localname = basename($dir); }  
  
  $iter = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir ), true );  
  $i = 0;  
  foreach ( $iter as $file ){  
   if($regexpExclude AND preg_match($regexpExclude, $file)){ continue; }  
   if(++$i > 50){ // **  
    $i = 0;  
    $this->close();  
    $this->open( $this->qgFilename, ZipArchive::CREATE );  
   }  
   $path = $localname.substr($file,strlen($dir));  
   $this->addFile( $file, $path );  
  }  
 }  
}  

** allerdings hat die Klasse Probleme mit vielen Dateien, desshalb baue ich einen Zähler ein um immer nach 50 Dateien das Zip zu schliessen und wieder neue zu eröffnen.