flush în PHP

Trimite imediat spre browser tot ce a fost afișat până acum.

Sintaxă
flush(): void

Ce face flush

flush cere PHP-ului să trimită serverului web tot ce a afișat până în acest moment, fără să mai aștepte finalul scriptului. Așa poți arăta progresul unei operații lungi.

Nu golește bufferele deschise cu ob_start: pentru ele apelezi întâi ob_flush(). Serverul web, un proxy sau compresia gzip pot ține datele până la final, deci rezultatul diferă de la un server la altul.

Ce returnează

Nimic.

Exemple

Exemplul 1: Progresul unui import

<?php
foreach (["clienti.csv", "produse.csv", "comenzi.csv"] as $fisier) {
    echo "Import $fisier... gata\n";
    flush();
}

Rezultat

Import clienti.csv... gata
Import produse.csv... gata
Import comenzi.csv... gata

Greșeli frecvente

  • Folosești flush cu un buffer ob_start deschis și nu se întâmplă nimic. Apelează ob_flush() înainte de flush().

Comenzi înrudite

  • ob_flush: Trimite mai departe conținutul bufferului curent și îl golește, fără să îl închidă.
  • ob_implicit_flush: Pornește sau oprește trimiterea automată a ieșirii spre browser după fiecare afișare.
  • ob_start / ob_get_clean / ob_end_flush: Pornește un buffer: tot ce afișezi după el este păstrat în memorie în loc să fie trimis imediat.