PHP Australia Conference 2015

Configuración en tiempo de ejecución

El comportamiento de estas funciones se ve afectado por la configuración de php.ini.

La extensión zlib ofrece la opción de comprimir de manera trasparente las páginas sobre la marcha, si el navegador que hace la solicitud lo soporta. Por lo tanto hay tres opciones en el archivo de configuración php.ini.

Opciones de Configuración de Zlib
Nombre Por defecto Cambiable Historial de cambios
zlib.output_compression "0" PHP_INI_ALL Disponible desde PHP 4.0.5.
zlib.output_compression_level "-1" PHP_INI_ALL Disponible desde PHP 4.3.0.
zlib.output_handler "" PHP_INI_ALL Disponible desde PHP 4.3.0.
Para más detalles y definiciones de los modos de PHP_INI_*, vea Dónde se puede realizar un ajuste de configuración.

He aquí una breve explicación de las directivas de configuración.

zlib.output_compression boolean/integer

Para comprimir páginas transparentemente. Si esta opción está configurada en "On" en php.ini o en la configuración de Apache, las páginas serán comprimidas si el navegador envía un encabezado "Accept-Encoding: gzip" o "deflate". Los encabezados "Content-Encoding: gzip" (respectivamente "deflate") y "Vary: Accept-Encoding" serán agregados a la salida. En tiempo de ejecución, esto se puede configurar sólo antes de enviar cualquier salida.

Esta opción también acepta valores enteros en lugar del booleano "On"/"Off", usando esto se puede configurar el tamaño del buffer de salida (por defecto es 4KB).

Nota:

output_handler debe estar vacío si ésta se configura en 'On' ! De otra manera se debe usar zlib.output_handler.

zlib.output_compression_level integer

Nivel de compresión usado para la salida de la compresión transparente. Especifica un valor entre 0 (no comprimido) y 9 (máxima compresión). El valor por defecto es -1, que deja que el servidor decida cual nivel utilizar.

zlib.output_handler string

No se pueden especificar manejadores adicionales de salida si zlib.output_compression está activada aquí. Esta configuración hace lo mismo que output_handler pero en un orden diferente.

add a note add a note

User Contributed Notes 2 notes

up
1
scott at pawprint dot net
2 years ago
In the hopes this will help others - a hard to spot gotcha when implementing zlib.output_compression. if you use flush() anywhere in your script (even right at the end) the compression won't work - you need to let that happen automatically or it ends up being sent uncompressed.
up
-1
Nathan
2 years ago
Apparently, there is a bug in certain versions of PHP with setting zlib.output_compression to "On" via ini_set:

<?php
ini_set
("zlib.output_compression", "On");
?>

In some cases, it does not send the Content-type header and browsers won't know to decompress the contents before displaying. Instead, you can set it to the buffer size, which sends the correct header:

<?php
ini_set
("zlib.output_compression", 4096);
?>
To Top