fsync în PHP

Forțează scrierea fizică pe disc a datelor unui fișier și a informațiilor despre el.

Sintaxă
fsync($stream): bool

Ce face fsync

fsync așteaptă până când sistemul de operare a scris efectiv pe disc tot ce ține de fișier: conținutul și informațiile despre el (dimensiune, dată). După fsync, datele rămân chiar dacă serverul se oprește brusc.

Este mai lent decât fflush, deci îl folosești doar pentru date importante, de exemplu înregistrarea unei plăți într-un fișier.

Parametri

Parametru Descriere
$stream Resursa unui fișier local, deschis pentru scriere.

Ce returnează

true la succes, false la eroare.

Exemple

Exemplul 1: Înregistrare care nu trebuie pierdută

<?php
$f = fopen("plati.log", "a");
fwrite($f, "2026-10-19 Plată 250 lei, comanda 1024\n");
var_dump(fsync($f));
fclose($f);

Rezultat

bool(true)

Greșeli frecvente

  • Apelezi fsync după fiecare linie într-un import mare. Fiecare apel așteaptă discul și importul devine foarte lent. Apelează-l o dată, la final.

Comenzi înrudite

  • fdatasync: Forțează scrierea fizică pe disc doar a conținutului unui fișier.
  • fflush: Scrie imediat în fișier datele care așteaptă încă în bufferul de scriere.
  • fwrite / fputs: Scrie un text într-un fișier deschis cu fopen. fputs este același lucru, cu alt nume.