clearstatcache în PHP

Golește memoria internă cu informații despre fișiere, ca verificările următoare să citească din nou discul.

Sintaxă
clearstatcache(bool $clear_realpath_cache = false, string $filename = ''): void

Ce face clearstatcache

Funcții ca filesize, filemtime, is_file sau file_exists pot păstra rezultatul în memorie pentru ultimul fișier verificat. Funcțiile PHP care modifică fișiere (unlink, file_put_contents, touch…) golesc singure această memorie.

Ai nevoie de clearstatcache când fișierul este schimbat de altcineva în timp ce scriptul rulează, de exemplu de alt program sau într-o buclă care așteaptă un fișier. Cu primul parametru true golești și memoria căilor rezolvate de realpath.

Parametri

Parametru Descriere
$clear_realpath_cache Opțional. true golește și memoria căilor din realpath.
$filename Opțional. Golește doar informațiile pentru acest fișier (are efect doar împreună cu primul parametru).

Ce returnează

Nimic.

Exemple

Exemplul 1: Așteptarea unui fișier scris de alt program

Programul extern este simulat cu o comandă de shell. clearstatcache asigură că fiecare verificare citește discul.

<?php
file_put_contents("export.csv", "id,nume\n");
exec("printf '1,Ana\\n' >> export.csv");

clearstatcache();
echo filesize("export.csv") . " octeți";

Rezultat

14 octeți

Greșeli frecvente

  • Pui clearstatcache() după fiecare operație cu fișiere. Nu e nevoie: funcțiile PHP care modifică fișierul golesc deja memoria. Folosește-o doar pentru schimbări făcute din afara scriptului.

Comenzi înrudite

  • filesize: Returnează dimensiunea unui fișier, în octeți.
  • filemtime: Returnează momentul ultimei modificări a unui fișier, ca timestamp.
  • realpath_cache_get: Returnează conținutul memoriei interne în care PHP păstrează căile deja rezolvate.