¿Cómo vaciar la salida después de cada llamada de "eco"?
Tengo un script php que solo produce registros para el cliente.
Cuando hago eco de algo, quiero que se transfiera al cliente sobre la marcha.
(Porque mientras se procesa el script, la página está en blanco)
Ya había jugado con ob_start()
y ob_flush()
, pero no funcionaron.
¿Cuál es la mejor solución?
PD: está un poco sucio poner color al final de la echo
llamada...
EDITAR: Ninguna de las respuestas funcionó, ¿PHP o Apache Fault?
Tuve el mismo problema y uno de los ejemplos publicados en el manual funcionó. Se debe especificar un conjunto de caracteres como uno de los carteles aquí ya mencionados. http://www.php.net/manual/en/function.ob-flush.php#109314
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
ob_flush();
flush();
sleep(1);
}
echo 'End ...<br />';
Editar:
Estaba leyendo los comentarios en la página del manual y encontré un error que indica que ob_implicit_flush
no funciona y la siguiente es una solución alternativa:
ob_end_flush();
# CODE THAT NEEDS IMMEDIATE FLUSHING
ob_start();
Si esto no funciona, entonces lo que puede estar sucediendo es que el cliente no recibe el paquete del servidor hasta que el servidor haya acumulado suficientes caracteres para enviar lo que considera un paquete que vale la pena enviar.
Antigua respuesta:
Podrías usar ob_implicit_flush
el cual le indicará al buffer de salida que lo desactive por un tiempo:
ob_implicit_flush(true);
# CODE THAT NEEDS IMMEDIATE FLUSHING
ob_implicit_flush(false);