Forum und email

Zlib - Funções de Compressão

Introdução

Este módulo lhe possibilita ler e gerar transparentemente arquivos comprimidos do tipo gzip (.gz), através de muitas das funções filesystem nas quais funcionam com arquivos gzip comprimidos (e arquivos não comprimidos também, mas não com sockets).

Nota: A versão 4.0.4 introduziu um fopen-wrapper para arquivos .gz, assim você pode usar uma URL especial zlib: para acessar arquivos comprimidos transparentemente usando as funções f*() normais de acessos a arquivos se você colocar como prefixo no nome ou caminho zlib: ao chamar fopen(). Isto requer que você use uma biblioteca C em tempo de execução que tenha a função fopencookie(). Até agora apenas a GNU libc parace ser a única biblioteca que tenha este recurso.
No PHP 4.3.0, zlib: foi modificado para compress.zlib:// para previnir ambiguidades com nomes de arquivos contendo caracteres ':'. A função fopencookie() não é mais requerida. Maiores informações estão disponíveis em uma sessão sobre Compression Streams.

Dependências

Este módulo usa as funções da » zlib por Jean-loup Gailly e Mark Adler. Você terá que usar uma versão zlib >= à 1.0.9 com este módulo.

Configurações em execução

O comportamento dessas funções podem ser modificado pelas configurações do php.ini.

A extensão zlib oferece a opção de comprimir transparentemente suas páginas em tempo real, se o navegador requisitante suportar isto. Então existem três opções no arquivo de configuração php.ini.

Opções de Configuração da Zlib
Nome Padrão Modificável Modificação
zlib.output_compression 0 PHP_INI_ALL Disponível desde o PHP 4.0.5.
zlib.output_compression_level "-1" PHP_INI_ALL Disponível desde o PHP 4.3.0.
zlib.output_handler "" PHP_INI_ALL Disponível desde o PHP 4.3.0.
Para mais detalhes e definições das constantes PHP_INI_*, veja Diretivas do arquivo php.ini.

Aqui está uma breve explicação das diretrizes de configuração.

zlib.output_compression booleano/inteiro

Serve para comprimir páginas de modo transparente. Se esta opção for mudada para "On" no php.ini ou na configuração do Apache, as páginas serão comprimidas se o navegador enviar um cabeçalho "Accept-Encoding: gzip" ou "deflate". "Content-Encoding: gzip" (respectivamente "deflate") e cabeçalhos "Vary: Accept-Encoding" serão adicionados para a saida. Em tempo de execução, isso só pode ser definido antes de enviar qualquer saída.

Esta opção também aceita valores inteiros em vez de valores booleanos "On"/"Off", usando isto você pode configurar o tamanho do buffer de saída (o padrão é 4KB).

Nota: output_handler deve estar vazio se a diretriz estiver configurada em 'On'! Em vez disto você deve usar zlib.output_handler.

zlib.output_compression_level inteiro

Nível de compressão usado para as saídas.

zlib.output_handler string

Você não pode especificar tratamentos adicionais de saída se zlib.output_compression for ativado. Esta configuração faz o mesmo que a output_handler mas em uma ordem diferente.

Tipos Resource

Esta extensão define um ponteiro de arquivo resource retornado pela gzopen().

Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

FORCE_GZIP (integer)
FORCE_DEFLATE (integer)

Exemplos

Este exemplo abre um arquivo temporário e gera uma string teste dentro dele, então ela mostra o conteúdo deste arquivo duas vezes.

Example#1 Pequeno Exemplo das funções Zlib

<?php

$filename 
tempnam ('/tmp''zlibteste').'.gz';
echo 
"<html>\n<head></head>\n<body>\n<pre>\n";
$s "Somente um teste, teste, teste, teste, teste, teste, teste, teste!\n";

// abre o arquivo para gerar ele com a compressão máxima
$zp gzopen($filename"w9");

// escreve a string no arquivo
gzwrite($zp$s);

// fecha o arquivo
gzclose($zp);

// abre o arquivo para leitura
$zp gzopen($filename"r");

// lê 3 caracteres
echo gzread($zp3);

// mostra o conteúdo até o fim do arquivo e o fecha.
gzpassthru($zp);
gzclose($zp);

echo 
"\n";

// abre o arquivo e imprime o conteúdo dele (pela segunda vez).
if (readgzfile($filename) != strlen($s)) {
        echo 
"Erro com as funções zlib!";
}
unlink($filename);
echo 
"</pre>\n</body>\n</html>\n";

?>

Índice

  • gzclose — Fecha um ponteiro para um arquivo-gz
  • gzcompress — Comprime uma string
  • gzdecode — Decodifica uma string comprimida usando o gzip
  • gzdeflate — Comprime uma string usando DEFLATE
  • gzencode — Cria uma string comprimida com gzip
  • gzeof — Testa para o fim de um ponteiro de arquivo-gz
  • gzfile — Lê todo o arquivo-gz para uma matriz
  • gzgetc — Obtém um caractere de um ponteiro de arquivo-gz
  • gzgets — Obtém uma linha de um ponteiro de arquivo
  • gzgetss — Obtém uma linha de um ponteiro de arquivo-gz e retira as tags HTML
  • gzinflate — Descomprime uma string usando DEFLATE
  • gzopen — Abre um arquivo-gz
  • gzpassthru — Envia todos os dados restantes em um ponteiro para arquivo-gz
  • gzputs — Apelido para gzwrite
  • gzread — Leitura de arquivos-gz segura para binários
  • gzrewind — Retorna ao início a posição de um ponteiro para um arquivo-gz
  • gzseek — Move o ponteiro de um arquivo-gz
  • gztell — Indica a posição de leitura/gravação em um ponteiro para arquivo-gz
  • gzuncompress — Descomprime uma string com DEFLATED
  • gzwrite — Escrita segura para binário em arquivo-gz
  • readgzfile — Mostra um arquivo-gz
  • zlib_get_coding_type — Retorna o tipo de codificação para a compressão de saída