PHP Unconference Europe 2015

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

L'extension zlib offre l'option de compresser de manière transparente les pages PHP à la volée, si le navigateur du visiteur le supporte. Voici donc les trois options à utiliser dans le fichier de configuration php.ini.

Options de configuration Zlib
Nom Défaut Modifiable Historique
zlib.output_compression "0" PHP_INI_ALL Disponible depuis PHP 4.0.5.
zlib.output_compression_level "-1" PHP_INI_ALL Disponible depuis PHP 4.3.0.
zlib.output_handler "" PHP_INI_ALL Disponible depuis PHP 4.3.0.
Pour plus de détails sur les modes PHP_INI_*, reportez-vous à Où une directive de configuration peut être modifiée.

Voici un éclaircissement sur l'utilisation des directives de configuration.

zlib.output_compression booléen/entier

Active ou pas la compression transparente des pages. Si cette option est mise à "On" dans php.ini ou dans la configuration Apache, les pages sont compressées si le navigateur envoie un en-tête "Accept-Encoding: gzip" ou "deflate". Les en-têtes "Content-Encoding: gzip" (respectivement "deflate") et "Vary: Accept-Encoding" sont ajoutés dans la page envoyée au navigateur. En fonctionnement, il peut être défini uniquement avant tout affichage.

Cette option accepte aussi des valeurs entières au lieu des booléens, "On"/"Off", ce qui vous permet de configurer la taille du tampon de sortie (par défaut, il vaut 4ko).

Note:

output_handler doit être laissée à vide si cette option est activée. Sinon, vous devez utiliser zlib.output_handler.

zlib.output_compression_level entier

Niveau de compression utilisé pour la compression de sortie. La valeur doit être comprise entre 0 (aucune compression) et 9 (compression élevée). La valeur par défaut est -1, ce qui laissera le serveur décider du niveau de compression à utiliser.

zlib.output_handler chaîne de caractères

Vous ne pouvez pas spécifier de gestionnaire de sortie supplémentaire si zlib.output_compression est activée. Cette configuration est la même que output_handler mais dans un ordre différent.

add a note add a note

User Contributed Notes 2 notes

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);
?>
up
-4
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.
To Top