Zitat Zitat von Chocwise
Wenn du mit PHP zugriff auf die auf Shellebene agierenden Funktionen hast, verwende system("zip -r zieldatei ./quellpfad/");
Das spart sicherlich erheblich Performance im Gegensatz zu einem PHP-Batch.

ansonsten schau dir mal die Funktion gzencode() an. Ich hab nie versucht mit einer solchen Funkion ein Archiv aus einer oder mehrerer Datei(en) zu erstellen. Ich hatte bisher immer Shell-Zugriff.
Dummerweise habe ich weder Zugriff auf System noch auf Exec. Und wie es scheint schaft GLib nur Strings zu verschlüsseln. Also hab ich so gemacht:

PHP-Code:
$dir_to_pack "archive";
$verz=opendir($dir_to_pack);
while (
$file readdir ($verz))  {
  if(
$file != "." && $file != "..") { 
    
$filei substr($file0strlen($file) - 4);
    
$f fopen($dir_to_pack."/".$file,"r");
    
$data fread($f,filesize("blogs/".$file));
    
$outputer=$outputer."#**`&&".$dir_to_pack."/".$file."\n".$data;
  }

closedir($verz);

$fp fopen("x.temp""w");
fwrite($fp$outputer);
fclose($fp);

$data1 implode(""file("backup.temp"));
$gzdata gzencode($data19);
$fname=$dir_to_pack.".gz";
$fp fopen($fname"w");
fwrite($fp$gzdata);
fclose($fp);

unlink("x.temp");
echo 
'<a href="'.$fname.'">'.$dir_to_pack.'.gz downloaden</a>'
Zum verpacken, wobei $dir_to_pack das zu packende Verzeichnis enthält...

PHP-Code:
$file_to_unpack "x.gz";
$zp gzopen($file_to_unpack"r");
$inhalt "";
while (
$data gzread($zp8192)) $inhalt .= $data;
  
$outputer $inhalt;
$outputer explode("#**`&&",$outputer);
for(
$x=0;$x<count($outputer);$x++) {
  
$out explode("\n",$outputer[$x]);
  if(
$out[0] != '') {
    
$f fopen($out[0],"w");
    for(
$i=1;$i<count($out);$i++)
      
fwrite($f,$out[$i]."\n");
  }

Zum Entpacken. $file_to_unpack enthält den Dateinamen.

Ich habe die Quelltexte 1:1 aus meinem Blog (sieh Sig ) übernommen, und hier schnell etwas allgemeiener umgeschrieben. Sie müssten funktionieren, sind aber nicht getestet.

Ich übernehme Support falls die Skripte nicht gehen nur per PN.