clearstatcache

clearstatcache($clear_realpath_cache, $filename)

PHP zapamiętuje w trakcie skryptu informacje o plikach (rozmiar, czasy, istnienie). Funkcja czyści tę pamięć podręczną, więc następne zapytanie odczyta aktualny stan. Niczego nie zwraca.

Parametry

  • $clear_realpath_cache – opcjonalny, true = wyczyść także pamięć podręczną rzeczywistych ścieżek (realpath). Domyślnie false.
  • $filename – opcjonalny, tylko z pierwszym parametrem ustawionym na true: czyści tylko informacje o tym pliku.

Przykłady

$file = sys_get_temp_dir() . "/garth-przyklad.txt";
file_put_contents($file, "abc");
echo filesize($file); // 3
// inny program zmienia plik (tu dla przykładu znowu PHP)
file_put_contents($file, "abcdef");
clearstatcache();
echo filesize($file); // 6
// wyczyść informacje tylko o jednym pliku
clearstatcache(true, $file);
// unlink() sama czyści pamięć podręczną
unlink($file);
var_dump(file_exists($file)); // bool(false)

Na co uważać

  • Pamięci podręcznej używają stat(), lstat(), file_exists(), is_file(), is_dir(), is_link(), is_readable(), is_writable(), is_executable(), filesize(), filemtime(), fileatime(), filectime(), fileperms(), fileowner(), filegroup(), fileinode() i filetype().
  • Po zapisie w tym samym skrypcie PHP 7.4 bez clearstatcache() zwraca starą wartość (w przykładzie rozmiar 3 zamiast 6). PHP 8.3 i nowsze czyszczą pamięć podręczną same po zapisie przez file_put_contents(), fwrite() albo touch().
  • Jeśli plik zmienia inny program albo inny działający skrypt, clearstatcache() jest potrzebna w każdej wersji.
  • Pamięć podręczna obowiązuje tylko w czasie działania skryptu.

Powiązane funkcje:
filesize()
filemtime()
stat()
file_exists()
realpath()