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()
ob_start("ob_gzhandler");A continuación se muestra un ejemplo completo:
¿Cómo usar la función ob_gzhandler()?
<?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:
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:
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?