2009-06-10 10 views
6

Per impostazione predefinita, non verrà stampato nulla fino a quando non è stata completata l'intera pagina.come rendere eco la stampa subito in PHP?

C'è qualche funzione che può farlo scovare subito?

Ma non chiamando ob_end_flush() più volte, che non è quello che voglio.

Spero che voi ragazzi mi abbiate preso?

risposta

8

Se il buffering dell'output è attivo, il flushing è l'unico modo per inviare qualsiasi elemento al browser. Se vuoi emettere subito l'output, quindi attiva il buffering dell'output. Se questo non è nel tuo controllo, puoi semplicemente chiamare ob_end_flush() allo srart del tuo script che spegnerà il buffering dell'output. Tuttavia, non è possibile lasciare passare alcuni messaggi, mentre altri no (senza scrivere funzioni echo/print personalizzate)

chiamando ob_end_flush() arrossisce e disattiva il buffer di uscita più alto. Per assicurarsi che tutti i buffer di uscita sono spenti ei colori si può facilmente fare questo:

while (@ob_end_flush()); 
+0

+1 Vorresti dire – karim79

+0

Vuoi dire che richiamando ob_end_flush() una volta, le successive funzioni di eco/stampa verranno visualizzate immediatamente? – omg

+0

@Shore, Sì, questo è ciò che intendo. chiamando ob_end_flush() giri del buffer di output più alto. –

6

Dipenderà dal tuo server web. Chiamando flush sarà svuotare l'uscita di qualsiasi buffer corrente è aperto, però, come si dice sulla pagina collegata:

flush() non ha alcun effetto sul sistema di buffering del server Web o il browser sul lato client . Quindi è necessario chiamare sia ob_flush() che flush() per svuotare i buffer di output.

Diversi server, in particolare su Win32, eseguiranno comunque il buffering dell'output dallo script finché non verrà terminato prima di trasmettere i risultati al browser.

I moduli server per Apache come mod_gzip possono eseguire il buffering proprio per cui flush() non comporta l'invio immediato di dati al client.

1

Si potrebbe disattivare l'uscita-buffering sul vostro/test-server di sviluppo. Cambia la variabile output_buffering nel tuo file di configurazione php.ini.

0

ob_end_flush() genererà un avviso se viene utilizzato nella parte superiore dello script quando non è presente alcun buffer da svuotare. Questo potrebbe essere un problema se hai intenzione di impostare cookie o intestazioni. Ho scoperto che non influiva sul buffering sul mio server condiviso (Rackspace Reseller).

Problemi correlati