desactivar el buffer de php, forzar la salida a pantalla flush()

para ello será necesario hacer tres cosas:

definir en el php.ini output_buffering = 0
usar la instuccion flush() despues de cada salida a pantalla. Esto es incomodo, asi que podemos hacer uso de la funcion: ob_implicit_flush(true) que lo que hace es activar automaticamente un flush() despues de cada print y echo.
Además será necesario empeza definiendo un bufer ob_start(); al principio del codigo y cada vez que queramos forzar la salida al navegador utilizar un ob_flush().

asi tendremos un controld e poder enviar gran cantidad de información al navegador e ir viendola directamente sin tener que esperar.

Dos instrucciones a tener en cuenta cuando queremos mostrar salidas de datos html muy grandes por pantalla. Son las variables de inicio de php que limitan la memoria máxima de un script y su tiempo de ejecucion:
que corresponden a :

PHP:
  1. ini_set('max_execution_time',9000); //tiempo limite de ejecucion de un escript en segundos.
  2. ini_set("memory_limit","1500M"); // aumentamos la memoria a 1,5GB
  3. ini_set("buffering ","0"); // desactivando el buffer a salida estandar
  4.  
  5. for(i=0;i<100000;i++){
  6. echo i;
  7.  
  8. ob_flush();// forzar la salida o control de la salida del texto al navegador con buffers.
  9.  
  10. flush();// opcion si no se usan buffers
  11.  
  12. sleep(20);
  13. }

esto va bien para minotorizar procesos largos de mirgración de datos, parseos extremadamente largos, etc.

el problema es cuando itentas hacer un flush justa antes de un file_get_contents(), que suele relentizar la salida a pantalla. Asi consigues verlo todo cuando toca.

Editado 16-11-2009:

No he comentado, que en segun que navegadores es necesario, que el código de salida tenga las cabeceras correctas asi incluir las cabeceras, y el cuerpo antes de hacer los "echos" o prints por pantalla.

una posible cabecera:

HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6. </head>
  7. <body>

acordaos de cerrar los tags body y html despues de las salidas a pantalla

Etiquetas: , , , , ,

Deja un comentario

CAPTCHA Image Audio Version
Reload Image