2009-06-10 18 views
6

De forma predeterminada, no se imprimirá nada hasta que la página completa haya terminado de ejecutarse.cómo hacer eco imprimir de inmediato en PHP?

¿Hay alguna función que pueda hacer que se purgue de inmediato?

Pero no llamando al ob_end_flush() varias veces, que no es lo que quiero.

Espero que ustedes me consiguieron?

Respuesta

8

Si el almacenamiento en búfer de salida está activado, el enjuague es la única manera de enviar cualquier cosa al navegador. Si desea imprimir de inmediato, cambie el buffer de salida. Si eso no está bajo tu control, simplemente puedes llamar a ob_end_flush() en el srart de tu script que desactivará el buffer de salida. Sin embargo, no es posible dejar pasar algunos mensajes, y algunos no (sin escribir funciones personalizadas de eco/impresión)

al llamar a ob_end_flush() se vaciarán y desactivarán el búfer de salida superior. Para asegurarse de que todos los buffers de salida están apagados y los colores que usted puede hacer esto:

while (@ob_end_flush()); 
+0

+1 Sería correcto – karim79

+0

¿Quiere decir que al llamar a ob_end_flush() una vez, las funciones de eco/impresión posteriores se mostrarán de inmediato? – omg

+0

@Shore, sí, eso es lo que quiero decir. llamar a ob_end_flush() convierte el búfer de salida más alto. –

6

Depende de su servidor web. Llamando flush eliminará la salida sin embargo de cualquier búfer está abierta, como se dice en la página del enlace:

flush() no tiene ningún efecto sobre el sistema de almacenamiento temporal de su servidor web o el navegador en el lado del cliente . Por lo tanto, debe llamar tanto a ob_flush() como a flush() para purgar los búferes de salida.

Varios servidores, especialmente en Win32, aún almacenan en búfer la salida de su secuencia de comandos hasta que finaliza antes de transmitir los resultados al navegador.

Los módulos de servidor para Apache como mod_gzip pueden hacer un búfer propio que hará que flush() no provoque que los datos se envíen inmediatamente al cliente.

1

Se puede desactivar la salida amortiguadora en su desarrollo/test-servidor. Cambie la variable output_buffering en su archivo de configuración php.ini.

0

ob_end_flush() arrojará un aviso si se utiliza en la parte superior de la secuencia de comandos cuando no hay memoria intermedia para vaciar. Esto puede ser un problema si planea establecer cookies o encabezados. Descubrí que no afectaba el almacenamiento en búfer de mi servidor compartido (Revendedor de Rackspace).

Cuestiones relacionadas