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 — Écrit dans un fichier compressé gzip
Description
gzwrite() écrit le contenu de la chaîne string dans le fichier compressé zp .
Liste de paramètres
- zp
-
Le pointeur de fichier. Il doit être valide et doit pointer vers un fichier ouvert avec succès grâce à la fonction gzopen().
- string
-
La chaîne à écrire.
- length
-
Le nombre d'octets décompressés à écrire. Si fournie, l'écriture s'arrêtera après length (décompressé) octets écrits ou si la fin de la chaîne string est atteinte ; celui qui survient le premier.
Note: Notez que si l'argument length est donné, alors l'option de configuration magic_quotes_runtime sera ignoré et aucun slash ne sera supprimé de la chaîne string .
Valeurs de retour
Retourne le nombre d'octets (décompressés) écrits dans le fichier gz donné.
Exemples
Exemple #1 Exemple avec gzwrite()
<?php
$string = 'Quelques informations à compresser';
$gz = gzopen('somefile.gz','w9');
gzwrite($gz, $string);
gzclose($gz);
?>
gzwrite
27-Mar-2008 09:34
22-Feb-2008 08:24
How about this instead:
$s = file_get_contents('file.tar');
file_put_contents('file.tar.gz',gzencode($s,9));
13-Aug-2003 01: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.
