2008-09-25 22 views

Respuesta

1

Puede llamar flush() en PHP, pero hay varios otros lugares que la salida pueda ser considerada (por ejemplo en el servidor web). Si está utilizando el almacenamiento en búferes de salida, también debe llamar al ob_flush().

También puede encontrar que algunos navegadores no quede inutilizada la página hasta que el HTML es válido que no será hasta que todas las etiquetas están cerradas (como cuerpo, html)

7
function printnow($str, $bbreak=true){ 
    print "$str"; 
    if($bbreak){ 
     print "<br />"; 
    } 
    ob_flush(); flush(); 
} 

Obviamente, esto no se va a comportar, si se le pasa objetos complicados (o al menos aquellas que no implementan __toString), pero se entiende la idea.

0

flush() es parte de la respuesta. Sin embargo, al menos hasta hace un año, usar Flush no era confiable en Safari. Dependiendo de su escenario, buscaría soluciones que impliquen javascript. Tal vez las diversas implementaciones de barras de progreso tengan código/ideas que puede reciclar.

2

Como otros señalaron, hay lugares donde las cosas se pueden colgar además de PHP (por ejemplo, el servidor web o el navegador del cliente). Si realmente desea asegurarse de que la información se muestre a medida que esté disponible, es probable que necesite alguna solución basada en AJAX. Tendría una secuencia de comandos PHP que maneja la pantalla y otra que hace cálculos, y la secuencia de comandos de la pantalla hace las solicitudes AJAX a la otra. jQuery tiene algunas funciones AJAX bastante simples que pueden ayudarle allí.

También querrá tener una alternativa en caso de que el navegador no admita/haya deshabilitado JavaScript que simplemente sería la página estándar que puede no mostrar el contenido hasta el final.

0

Sugeriría usar AJAX.

1

Habilitar el enjuague implícito como blueyed dijo que debería ser el truco, ya que llama a color después de cada eco, sin embargo, algunos navegadores también requieren que no se establezcan encabezados sin caché. Esto es lo que uso. Su millaje puede variar según el navegador.

header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past 
header('Pragma: no-cache'); 
Cuestiones relacionadas