¿Cuál es la diferencia entre ob_flush()
y flush()
y por qué debo llamar a ambos?PHP buffer ob_flush() vs. flush()
El ob_flush()
reference dice:
Esta función enviará el contenido de la memoria intermedia de salida (si lo hay).
El flush()
reference dice:
Vacía los buffers de escritura de PHP y cualquiera que sea el motor que PHP está usando (CGI, el servidor web, etc).
Sin embargo, continúa diciendo:
[que] puede no ser capaz de eliminar el esquema de almacenamiento temporal de su servidor web ...
Por lo tanto, me parece que lo que pude solo use ob_flush()
todo el tiempo. Sin embargo, obtengo resultados extraños cuando hago eso. ¿Podría alguien explicar en términos simples qué está pasando aquí?
Use ob_flush y flush y úselos en ese orden. – Robino
El detalle importante que falta en esta respuesta es la opción de configuración ['output_buffering'] (http://www.php.net/manual/en/outcontrol.configuration.php#ini.output-buffering), cuyo valor predeterminado en producción las versiones de php.ini son 4096. Eso significa que cuando se inicia cualquier script de PHP, los primeros 4096 bytes de salida se almacenan en búfer (en un búfer descargable con 'ob_flush()'). Es por eso que es necesario usar 'ob_flush()' así como 'flush()'. Deshabilitar 'output_buffering' via php.ini o llamar' ob_end_clean() 'o' ob_end_flush() 'al inicio del script elimina esta necesidad. –