Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] GLib-Funktionen für mehrere Dateien
Crash-Override
17.07.2005, 17:38
Jo, weder auf Selfphp noch auf der PHP-Referenz Seite fund ich eine geeignete Funktion. Auf der Referenz Seite nur für eine Datei.
Ich brauche dringend eine Funktion mit der ich mehrere Dateien ( am besten sogar Ordner) in ein komprimiertes Format bringe. GLib viel mir als erstes ein, wenn jemand was genauer weiß über bz2 oder zip, kann er mir auch bescheid geben... :)
Chocwise
17.07.2005, 20:15
Jo, weder auf Selfphp noch auf der PHP-Referenz Seite fund ich eine geeignete Funktion. Auf der Referenz Seite nur für eine Datei.
Ich brauche dringend eine Funktion mit der ich mehrere Dateien ( am besten sogar Ordner) in ein komprimiertes Format bringe. GLib viel mir als erstes ein, wenn jemand was genauer weiß über bz2 oder zip, kann er mir auch bescheid geben... :)
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. ;)
Crash-Override
18.07.2005, 17:29
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:
$dir_to_pack = "archive";
$verz=opendir($dir_to_pack);
while ($file = readdir ($verz)) {
if($file != "." && $file != "..") {
$filei = substr($file, 0, strlen($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($data1, 9);
$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...
$file_to_unpack = "x.gz";
$zp = gzopen($file_to_unpack, "r");
$inhalt = "";
while ($data = gzread($zp, 8192)) $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.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.