clearstatcache

funkcja

Czyści wewnętrzną pamięć podręczną wyników stat PHP (rozmiar, czas modyfikacji itp.). Nie zwraca wartości.

clearstatcache(bool $clear_realpath_cache = false, string $filename = ""): void

PHP buforuje wyniki funkcji takich jak file_exists, filesize, filemtime czy is_file, by uniknąć wielokrotnych wywołań systemowych. Gdy plik zmienia się podczas działania skryptu — np. po fwrite lub zewnętrznym procesie — bufor może zwracać nieaktualne dane. clearstatcache czyści ten bufor.

Parametry:

  • $clear_realpath_cache = true — czyści również bufor realpath (wymagane, gdy zmieniają się dowiązania symboliczne).
  • $filename — jeśli podany, czyści cache tylko dla tego jednego pliku (efektywniejsze niż czyszczenie całości).
<?php
declare(strict_types=1);

$sciezka = __DIR__ . '/log.txt';

file_put_contents($sciezka, 'dane początkowe');
$rozmiar1 = filesize($sciezka);

file_put_contents($sciezka, 'dane po aktualizacji z dłuższą zawartością');

// Bez clearstatcache filesize mogłoby zwrócić starą wartość
clearstatcache(false, $sciezka);
$rozmiar2 = filesize($sciezka);

echo "Rozmiar przed: $rozmiar1 B" . PHP_EOL;
echo "Rozmiar po:    $rozmiar2 B" . PHP_EOL;