que ob_start ob_get_contents limpiar clean php output-buffering

php - ob_start - ¿El uso del buffer de salida es una mala práctica?



php ob_start echo (8)

El búfer de salida NO es una mala práctica. Por ejemplo, puede acelerar la carga de su sitio web utilizando la compresión GZIP (aunque si es posible, es mejor hacerlo dentro de .htaccess).

<?php if (substr_count($_SERVER[''HTTP_ACCEPT_ENCODING''], ''gzip'')) ob_start("ob_gzhandler"); else ob_start(); ?>

Desventajas: No lo sé. Buena pregunta.

PD: también he encontrado este tema sobre el búfer de salida .

¿ ob_start programadores de PHP en general consideran ob_start / ob_get_clean() como una mala práctica?

¿Hay alguna desventaja de búfer de salida?


El búfer de salida en algunas circunstancias es casi obligatorio. Con PHP, tan pronto como devuelve algo al usuario, se envían los encabezados. Por lo tanto, si obtiene el procesamiento parcial de una página y ocurre algo que requiere que se le envíe un encabezado, no puede hacerlo a menos que se active el almacenamiento en búfer. De lo contrario, aparece el temido "No se puede modificar la información del encabezado: los encabezados ya se enviaron".

Algunos te dirán que no debes codificar de esa manera. humbug que digo!

Con los buffers activados su código puede ser más flexible.


En realidad es una buena práctica. Acelerar la transferencia de datos


La principal desventaja del búfer de salida es no saber (o prestar atención) a la profundidad de la pila de búferes. Combine esto con el manejo de errores demasiado agresivo o las subrutinas que salen / mueren inesperadamente y perderá lo que haya en el búfer, dejando pocas pistas sobre lo que está sucediendo.

Por ejemplo, el marco de trabajo de Zend utiliza el búfer de salida para casi todo, pero cuando detecta un error crítico, imprime un mensaje y sale de inmediato. Cualquier información de depuración útil se pierde.


No se considera malo (o bueno). A algunas personas les gusta, otras no. Personalmente, creo que hay razones para no usarlo. Pienso en ello como último recurso. A veces, puede tener una situación en la que el búfer de salida puede ser su única opción para resolver un problema en particular, así que guarde esta opción solo para esas situaciones.

No creo que haya ningún aumento de rendimiento o aceleración de la carga de la página al usarlo, pero también depende del servidor que use y si usa php como mod_php o como cgi o fastcgi.


Para la eficiencia del programa, la captura del buffer de salida no es mala. Es una característica útil de PHP. Sin embargo, se puede usar para cosas que se hacen mejor con otros métodos. El olor a código puede ser un problema, así que asegúrese de que no haya una solución mejor y más clara para su problema.


Seguramente, el búfer de salida significa que el contenido que podría haber sido enviado al navegador de inmediato se está quedando en el servidor, lo que requiere una memoria extra (un problema muy importante si se trata de una gran escalabilidad), por lo que si su programa está tomando un tiempo para ejecutar, esta sobrecarga de memoria afectaría el rendimiento.

No sé PHP lo suficientemente bien como para decir si esto es cierto o si incluso libera la memoria cuando no se usa el búfer, pero esa es generalmente la teoría.


Si no me equivoco, Java también tiene este búfer de entrada y salida para leer y escribir archivos.