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 — Escrita segura para binário em arquivo-gz
Descrição
gzwrite() escreve o conteúdo de string para o arquivo-gz.
Parâmetros
- zp
-
O ponteiro do arquivo gz. Precisa ser válido, e apontar para um arquivo aberto com sucesso por gzopen().
- string
-
A string a ser escrita.
- length
-
O número de bytes descompresso para escrever. Se fornecido, a escrita irá parar depos de length (descomprimido) bytes ter sido escritos, ou ao final de string , o que vier primeiro.
Nota: Note que se o argumentolength for dado, então a configuração magic_quotes_runtime será ignorada e não serão retiradas as barras de string .
Valor Retornado
Retorna o número de (descomprimido) bytes escrito no dado stream do arquivo gz.
Exemplos
Exemplo #1 Exemplo da gzwrite()
<?php
$string = 'Some information to compress';
$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.
