Saltar al contenido

Función PHP ob_gzhandler(): Todo lo que necesitas saber

Como desarrollador de PHP, es posible que necesites comprimir tu salida para reducir el uso de ancho de banda y mejorar la velocidad del sitio web. La función ob_gzhandler() es una función integrada de PHP que comprime la salida utilizando el algoritmo gzip. Este artículo cubre su sintaxis, uso y consideraciones importantes.

¿Qué es la función ob_gzhandler()?

La función ob_gzhandler() es una función integrada de PHP que comprime los búferes de salida utilizando gzip. Verifica automáticamente el encabezado Accept-Encoding del cliente y solo comprime la respuesta si el cliente admite gzip.

Cómo usar la función ob_gzhandler()

Usar ob_gzhandler() es sencillo. A continuación se muestra la sintaxis básica:

La sintaxis PHP de la función ob_gzhandler()

php
ob_start("ob_gzhandler");

A continuación se muestra un ejemplo completo:

¿Cómo usar la función ob_gzhandler()?

php
<?php

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

En este ejemplo, ob_start() inicia el búfer de salida con ob_gzhandler() como la función de devolución de llamada. La sentencia echo genera el contenido y ob_end_flush() envía el búfer comprimido al cliente.

Manejo de clientes no compatiblesob_gzhandler() devuelve false si el cliente no admite gzip. Deberías verificar el valor devuelto y recurrir al búfer estándar:

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

Establecer el nivel de compresiónob_start() no acepta un nivel de compresión. ob_gzhandler() utiliza el nivel de compresión zlib predeterminado. Para establecer un nivel específico (1–9), utiliza una devolución de llamada personalizada:

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

Conclusión

La función ob_gzhandler() proporciona una forma sencilla de comprimir la salida de PHP con gzip. Sin embargo, se considera un enfoque heredado. En el desarrollo web moderno, generalmente se prefiere la compresión a nivel de servidor (por ejemplo, Nginx, Apache) o la compresión gzip/brotli basada en CDN, ya que descarga el uso de CPU de PHP y maneja la compresión de manera más eficiente. Comprender ob_gzhandler() sigue siendo útil para bases de código heredadas o requisitos específicos de búfer.

Práctica

¿Cuál es el propósito de ob_gzhandler en PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.