fflush în PHP

Scrie imediat în fișier datele care așteaptă încă în bufferul de scriere.

Sintaxă
fflush($stream): bool

Ce face fflush

Ca să fie mai rapid, PHP nu scrie pe disc la fiecare fwrite, ci adună datele într-un buffer. fflush golește acest buffer, ca alte programe care citesc fișierul să vadă imediat datele noi.

Datele ajung la sistemul de operare, dar acesta le poate ține încă puțin în memorie. Pentru scriere garantată pe disc există fsync.

Parametri

Parametru Descriere
$stream Resursa returnată de fopen.

Ce returnează

true la succes, false la eroare.

Exemple

Exemplul 1: Jurnal vizibil imediat

<?php
$jurnal = fopen("import.log", "a");

foreach (["Pornire import", "100 produse", "Gata"] as $mesaj) {
    fwrite($jurnal, $mesaj . "\n");
    fflush($jurnal);
}
fclose($jurnal);

echo file_get_contents("import.log");

Rezultat

Pornire import
100 produse
Gata

Greșeli frecvente

  • Confunzi fflush cu flush. fflush lucrează pe un fișier deschis, flush trimite pagina spre browser.

Comenzi înrudite

  • fsync: Forțează scrierea fizică pe disc a datelor unui fișier și a informațiilor despre el.
  • fwrite / fputs: Scrie un text într-un fișier deschis cu fopen. fputs este același lucru, cu alt nume.
  • flush: Trimite imediat spre browser tot ce a fost afișat până acum.