ob_flush în PHP

Trimite mai departe conținutul bufferului curent și îl golește, fără să îl închidă.

Sintaxă
ob_flush(): bool

Ce face ob_flush

ob_flush trimite ce s-a adunat în buffer către nivelul următor (alt buffer sau serverul web) și golește bufferul. Bufferul rămâne deschis pentru afișarea care urmează.

Pentru ca textul să ajungă cu adevărat în browser în timpul rulării, de obicei se apelează ob_flush() urmat de flush(). Serverul web sau compresia gzip pot să mai țină totuși datele până la final.

Ce returnează

true la succes, false dacă nu există buffer.

Exemple

Exemplul 1: Progres afișat pe etape

<?php
ob_start();
foreach (["Citesc fișierul", "Import produse", "Gata"] as $pas) {
    echo $pas . "\n";
    ob_flush();
    flush();
}
ob_end_flush();

Rezultat

Citesc fișierul
Import produse
Gata

Greșeli frecvente

  • Apelezi doar ob_flush și te aștepți ca textul să apară imediat în browser. Mai ai nevoie de flush(), iar serverul poate avea propriul buffer.

Comenzi înrudite

  • flush: Trimite imediat spre browser tot ce a fost afișat până acum.
  • 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.
  • ob_implicit_flush: Pornește sau oprește trimiterea automată a ieșirii spre browser după fiecare afișare.