Aller au contenu

Fonction PHP ob_gzhandler() : Tout ce que vous devez savoir

En tant que développeur PHP, vous devrez peut-être compresser votre sortie pour réduire la consommation de bande passante et améliorer la vitesse du site web. La fonction ob_gzhandler() est une fonction PHP intégrée qui compresse la sortie à l'aide de l'algorithme gzip. Cet article couvre sa syntaxe, son utilisation et les points importants à considérer.

Qu'est-ce que la fonction ob_gzhandler() ?

La fonction ob_gzhandler() est une fonction PHP intégrée qui compresse les tampons de sortie à l'aide de gzip. Elle vérifie automatiquement l'en-tête Accept-Encoding du client et ne compresse la réponse que si le client prend en charge gzip.

Comment utiliser la fonction ob_gzhandler()

L'utilisation de ob_gzhandler() est simple. Voici la syntaxe de base :

La syntaxe PHP de la fonction ob_gzhandler()

php
ob_start("ob_gzhandler");

Voici un exemple complet :

Comment utiliser la fonction ob_gzhandler() ?

php
<?php

ob_start("ob_gzhandler");
echo "This will be compressed using gzip compression";
ob_end_flush();
?>

Dans cet exemple, ob_start() initialise la mise en mémoire tampon de sortie avec ob_gzhandler() en tant que fonction de rappel. L'instruction echo affiche le contenu, et ob_end_flush() envoie le tampon compressé au client.

Gestion des clients non compatiblesob_gzhandler() renvoie false si le client ne prend pas en charge gzip. Vous devez vérifier la valeur de retour et revenir à une mise en mémoire tampon standard :

php
if (!ob_start("ob_gzhandler")) {
    ob_start();
}

Définir le niveau de compressionob_start() n'accepte pas de niveau de compression. ob_gzhandler() utilise le niveau de compression zlib par défaut. Pour définir un niveau spécifique (1–9), utilisez une fonction de rappel personnalisée :

php
ob_start(function ($buffer) {
    return gzencode($buffer, 9);
});

Conclusion

La fonction ob_gzhandler() offre un moyen simple de compresser la sortie PHP avec gzip. Cependant, elle est considérée comme une méthode héritée. Dans le développement web moderne, la compression au niveau du serveur (par exemple, Nginx, Apache) ou la compression gzip/brotli basée sur un CDN est généralement préférée, car elle décharge l'utilisation du CPU de PHP et gère la compression plus efficacement. Comprendre ob_gzhandler() reste utile pour les bases de code héritées ou des exigences de mise en mémoire tampon spécifiques.

Pratique

Quel est le rôle de ob_gzhandler en PHP ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.