Funciones de Compresi贸n Zlib

CLXXV. Funciones de Compresi贸n Zlib

Introducci贸n

Este m贸dulo le permite leer y escribir de forma transparente sobre archivos gzip (.gz) comprimidos, a trav茅s de algunas versiones de la mayor铆a de funciones del sistema de archivos que trabajen con archivos comprimidos-gzip (y archivos sin comprimir tambi茅n, pero no con sockets).

Nota: La versi贸n 4.0.4 introdujo una envoltura fopen para archivos-.gz, de modo que puede usar una URL especial 'zlib:' para acceder a archivos comprimidos de forma transparente usando las funciones de acceso normales f*() si precede el nombre o ruta de archivo con un prefijo 'zlib:' al llamar a fopen().

En la versi贸n 4.3.0, este prefijo especial ha cambiado a 'zlib://' para prevenir ambig眉edades con nombres de archivo que contengan ':'.

Esta caracter铆stica requiere una biblioteca C de tiempo de ejecuci贸n que provee la funci贸n fopencookie(). Hasta donde se conoce, la biblioteca de C GNU es la 煤nica que ofrece esta caracter铆stica.

Requisitos

Este m贸dulo usa las funciones de zlib, por Jean-loup Gailly y Mark Adler. Debe usar una versi贸n de zlib >= 1.0.9 con 茅ste m贸dulo.

Instalaci贸n

Soporte Zlib en PHP no est谩 activo por defecto. Usted necesitar谩 configurar PHP --with-zlib[=DIR]

La versi贸n para Windows de PHP tiene soporte nativo para esta extensi贸n. No se necesita cargar ninguna extensi贸n adicional para usar estas funciones.

Nota: soporte integrado para zlib en Windows est谩 disponible con PHP 4.3.0

Configuraci贸n en tiempo de ejecuci贸n

El comportamiento de estas funciones est谩 afectado por los valores definidos en php.ini.

La extensi贸n de zlib ofrece la opci贸n de comprimir transparentemente tus p谩ginas web al vuelo, si el navegador de internet soporta esto. Por lo tanto hay tres opciones en el archivo de configuraci贸n php.ini.

Tabla 1. Opciones de configuraci贸n Zlib

NombreValor por DefectoModificableChangelog
zlib.output_compression"Off"PHP_INI_ALLAvailable since PHP 4.0.5.
zlib.output_compression_level"-1"PHP_INI_ALLAvailable since PHP 4.3.0.
zlib.output_handler""PHP_INI_ALLAvailable since PHP 4.3.0.
For further details and definitions of the PHP_INI_* constants, see the Ap茅ndice G.

A continuaci贸n se presenta una corta explicaci贸n de las directivas de configuraci贸n.

zlib.output_compression boolean/integer

Si se desea comprimir p谩ginas transparentemente. Si esta opci贸n est谩 en "On" en php.ini o en la configuraci贸n del Apache, las p谩ginas son comprimidas si el navegador env铆a un encabezado "Accept-Encoding: gzip" o "deflate". "Content-Encoding: gzip" (respectivamente "deflate") y "Vary: Accept-Encoding", los encabezados son agregados a la salida.

Esta opci贸n tambi茅n acepta valores enteros en vez de los boleanos "On"/"Off", usando esto usted puede fijar el tama帽o del buffer de salida (default es 4KB).

Nota: output_handler debe estar vac铆o si est谩 puesto en 'On' en lugar de este usted debe usar zlib.output_handler.

zlib.output_compression_level entero

El nivel de compresi贸n usado para la salida transparentemente comprimida.

zlib.output_handler cadena

Usted no puede especificar manejadores adicionales de salida si zlib.output_compression est谩 activada. Estos ajustes no son lo mismo que output_handler sino un diferente orden.

Tipos de recursos

Esta extensi贸n no tiene ning煤n tipo de recurso definido.

Constantes predefinidas

Estas constantes est谩n definidas por esta extensi贸n y estar谩n disponibles solamente cuando la extensi贸n ha sido o bien compilada dentro de PHP o grabada din谩micamente en tiempo de ejecuci贸n.

FORCE_GZIP (entero)

FORCE_DEFLATE (entero)

Ejemplos

Este ejemplo abre un archivo temporal y escribe una cadena de prueba en 茅l, luego imprime el contenido de este archivo dos veces.

Ejemplo 1. Peque帽o Ejemplo de Zlib

<?php

$nombre_archivo
= tempnam('/tmp', 'zlibtest') . '.gz';
echo
"<html>\n<head></head>\n<body>\n<pre>\n";
$s = "&iexcl;Tan solo una prueba, prueba, prueba, prueba, prueba, prueba!\n";

// abrir el archivo para escritura con maxima compresion
$zp = gzopen($nombre_archivo, "w9");

// escribir la cadena en el archivo
gzwrite($zp, $s);

// cerrar el archivo
gzclose($zp);

// abrir el archivo para lectura
$zp = gzopen($nombre_archivo, "r");

// leer 3 caracteres
echo gzread($zp, 3);

// mostrar la salida hasta el final de archivo y cerrarlo.
gzpassthru($zp);
gzclose($zp);

echo
"\n";

// abrir el archivo e imprimir su contenido (por segunda vez).
if (readgzfile($nombre_archivo) != strlen($s)) {
        echo
"&iexcl;Error con las funciones zlib!";
}
unlink($nombre_archivo);
echo
"</pre>\n</body>\n</html>\n";

?>
Tabla de contenidos
gzclose -- Cierra un apuntador de un fichero gz abierto
gzcompress -- Comprime una cadena
gzdeflate -- Comprime una cadena
gzencode -- Crea una cadena comprimida con gzip
gzeof -- Prueba de apuntador para el fin de archivo gz
gzfile -- Lee un archivo gz completo en una matriz
gzgetc -- Obtiene un caracter del archivo GZ apuntado
gzgets -- Obtiene una l铆nea del archivo apuntado
gzgetss --  Obtiene una l铆nea del archivo apuntado y le retira las etiquetas HTML
gzinflate -- Descomprime una cadena comprimida
gzopen -- Abrir un archivo gz
gzpassthru --  Imprimir todos los datos que restan en un apuntador a archivo gz
gzputs -- Alias de gzwrite()
gzread -- Lectura segura de archivo binario gz
gzrewind -- Reinicia la posici贸n de un apuntador de archivo gz
gzseek -- Busca en el archivo gz apuntado
gztell -- Indica la posici贸n de lectura/escritura del apuntador a archivo gz
gzuncompress -- Descomprime una cadena comprimida
gzwrite -- Escritura en un archivo gz, segura con material binario
readgzfile -- Imprimir un archivo gz
zlib_get_coding_type -- Regresa el tipo de codificaci贸n usada para la salida de la compresi贸n