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 — Escritura en un archivo gz, segura con material binario
Descripción
gzwrite() escribe el contenido de cadena al archivo gz dado.
Lista de parámetros
- zp
-
El apuntador de archivo gz. Debe ser válido, y debe apuntar a un archivo abierto exitosamente por gzopen().
- cadena
-
La cadena a escribir.
- longitud
-
El número de bytes sin comprimir a escribir. Si se define, la escritura se detendrá después de que se haya alcanzado la longitud de bytes escritos (sin comprimir) o que se encuentre el fin de cadena , lo que ocurra primero.
Note: note que si el argumento longitud es dado, entoces la opción de configuración magic_quotes_runtime será ignorada no se retirarán los slashes ("/") de cadena .
Valores retornados
Regresa el número de bytes (sin comprimir) escritos a archivo gz.
Ejemplos
Example #1 Ejemplo de gzwrite()
<?php
$string = 'Some information to compress';
$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.
