katzlbtjunk's method is certainly shorter, but it is unusable for anything except small files. It would try to load the whole file into memory, then create an entire compressed copy, and only then write it to disk. The other method given below will not exhaust memory like that.
gzwrite
(PHP 4, PHP 5)
gzwrite — Ausgabe in gz-komprimierte Dateien
Beschreibung
gzwrite() schreibt den Inhalt von string in die angegebene gz-Datei aus.
Parameter-Liste
- zp
-
Eine gz-Datei Resource. Diese muss gültig sein und auf eine Datei zeigen die erfolgreich mit gzopen() geöffnet wurde.
- string
-
Der auszugebende String.
- length
-
Die Anzahl unkomprimierter Bytes die ausgegeben werden soll. Wenn angegeben wird nach length geschriebenen Bytes aus string abgebrochen wenn bis dahin das Ende des Strings nicht erreicht ist.
Hinweis: Beachten Sie das der magic_quotes_runtime Konfigurationsparameter ignoriert wird und keine Slashes aus string entfernt werden wenn der optionale Parameter length übergeben wird.
Rückgabewerte
Gibt die Anzahl der (unkomprimierten) Bytes zurück die auf den gegebenen gz-Stream ausgegeben wurden.
Beispiele
Beispiel #1 gzwrite() Beispiel
<?php
$string = 'Zu komprimierende Daten';
$gz = gzopen('somefile.gz','w9');
gzwrite($gz, $string);
gzclose($gz);
?>
gzwrite
27-Mar-2008 01:34
21-Feb-2008 11:24
How about this instead:
$s = file_get_contents('file.tar');
file_put_contents('file.tar.gz',gzencode($s,9));
13-Aug-2003 04:30
This is a short example of use gzwrite function.
<?php
function gzcompressfile($source,$level=false){
$dest=$source.'.gz';
$mode='wb'.$level;
$error=false;
if($fp_out=gzopen($dest,$mode)){
if($fp_in=fopen($source,'rb')){
while(!feof($fp_in))
gzwrite($fp_out,fread($fp_in,1024*512));
fclose($fp_in);
}
else $error=true;
gzclose($fp_out);
}
else $error=true;
if($error) return false;
else return $dest;
}
?>
the function gzcompressfile() compress a file 'data.csv' to 'data.csv.gz'. the function return false if error, and the new file name if it's ok.
