Manual do PHP
Anterior |  | Próxima

# CLXXXVIII. 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 a seção Compression Streams Apêndice N.

# 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`.

Tabela 1. 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 Apêndice H.

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 não possui nenhum tipo resource.

# 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.

Exemplo 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($zp, 3);
// 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";
?>`

Anterior | Principal | Próxima
ZipArchive::unchangeName | Acima | gzclose