2011-03-24 30 views
27

Ahora mismo para ver los resultados, tengo que esperar hasta que todo el código termine de ejecutarse. Se cuelga hasta que se completa y se mantiene cargándose. Una vez que está terminado, muestra toda la información que estaba buscando. ¿Hay alguna forma de mostrar esto mientras el script aún se está ejecutando? Entonces, si tengo una impresión en algún lugar en la parte superior de mi código, quiero que se muestre cuando se invoca cuando el script se termina de ejecutar.Muestra los resultados mientras el script aún está ejecutándose

¿Alguien sabe cómo hacer esto?

Gracias

+0

estás hablando ajax php o – Gowri

Respuesta

48

Puede utilizar output buffering como esto:

ob_start(); 

echo('doing something...'); 

// send to browser 
ob_flush(); 

// ... do long running stuff 
echo('still going...'); 

ob_flush(); 

echo('done.'); 
ob_end_flush(); 
+3

Se trabajó para mí después añadí 'ob_implicit_flush (verdadero)' 'antes ob_start()'; – Bivis

+0

Tuve que agregar ob_implicit_flush (true) y también establecer output_buffering = Off en php.ini – embe

3

Usted puede hacer eso con búfer de salida. Active el almacenamiento en búfer de salida en la parte superior de la secuencia de comandos con ob_start(). Eso hace que PHP no envíe ninguna salida al navegador. En cambio, está almacenado internamente. Enjuague su salida en cualquier momento con ob_flush(), y el contenido se enviará al navegador.
Pero tenga en cuenta que el almacenamiento en búfer de salida está influenciado por muchos otros factores. Creo que algunas versiones de IIS esperarán hasta que el script finalice, ignorando el buffer de salida. Y algunos programas antivirus en el lado del cliente (¿Fue Panda?) Pueden esperar hasta que la página esté completamente cargada antes de pasarla al navegador.

0

Ésta funcionó para mí: (source)

function output($str) { 
    echo $str; 
    ob_end_flush(); 
    ob_flush(); 
    flush(); 
    ob_start(); 
} 
Cuestiones relacionadas