Qual è la differenza tra ob_flush()
e flush()
e perché devo chiamare entrambi?Buffer PHP ob_flush() vs. flush()
Il ob_flush()
reference dice:
Questa funzione invierà il contenuto del buffer di uscita (se presente).
Il flush()
reference dice:
svuota il buffer di scrittura di PHP e qualunque backend PHP sta usando (CGI, un server web, ecc).
Tuttavia, continua a dire:
[it] potrebbe non essere in grado di sostituire il sistema di buffering del server web ...
Quindi, mi sembra che ho potuto basta usare ob_flush()
tutto il tempo. Tuttavia, ottengo risultati strani quando lo faccio. Qualcuno potrebbe spiegare in termini semplici cosa sta succedendo qui?
Utilizzare ob_flush e flush e usarli in questo ordine. – Robino
L'importante dettaglio mancante da questa risposta è l'opzione di configurazione ['output_buffering'] (http://www.php.net/manual/en/outcontrol.configuration.php#ini.output-buffering), il cui valore predefinito in produzione le versioni di php.ini sono 4096. Ciò significa che quando inizia uno script PHP, i primi 4096 byte di output vengono bufferizzati (in un buffer flusibile con 'ob_flush()'). Questo è il motivo per cui è necessario usare 'ob_flush()' così come 'flush()'. Disabilitare 'output_buffering' via php.ini o chiamare' ob_end_clean() 'o' ob_end_flush() 'all'inizio dello script rimuove questa necessità. –