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()