It should be noted that a call to any of those functions will cache all of the file's information, not just the information that is returned.
Obviously it is clear that the following requires you to clear the cache.
<?php
$size1 = filesize($filename);
unlink($filename);
$size2 = filesize($filename);
// $size2 still equals $size1, unless you cleared the stat cache in between.
?>
<?php
$access = fileatime($filename);
unlink($filename);
$size = filesize($filename);
// $size will be the filesize before it was unlinked, because the filesize was cached when fileatime was called, even though the two functions wouldn't appear to have anything to do with either other.
?>
Confirmed on a windows system.
clearstatcache
(PHP 4, PHP 5)
clearstatcache — Libera la cache dello stato di un file
Descrizione
Quando si eseguono le funzioni di sistema stat
o
lstat
o una delle funzioni elencate nella
lista delle funzioni coinvolte (vedi sotto), il PHP memorizza le informazioni restituite
da queste funzioni in modo da fornire migliori performance. Esistono, tuttavia,
casi in cui si desidera rimuovere le informazioni memorizzate. Ad esempio,
nel caso in cui un file venga controllato più volte nel medesimo script ed il file si trova in situazioni
in cui possa venire rimosso o possa essere variato durante l'esecuzione dello script; in questi casi
si può volere cancellare le informazioni memorizzate. Per queste situazioni si può utilizzare la funzione
clearstatcache() che cancella le informazioni memorizzate dal PHP sullo
stato di un file.
Occorre notare che il PHP non memorizza informazioni su file inesistenti. Pertanto se si esegue la funzione file_exists() su un file che non esiste, questa restituisce FALSE fino a quando il file non viene creato. Un volta ccreato il file, la funzione restituisce TRUE anche se il file viene cancellato.
Nota: Queste funzioni memorizzano informazioni su specifici file, pertanto basta eseguire clearstatcache() nel caso di molteplici operazioni sul medesimo file oppure nel caso sia necessario non memorizzare informazioni su un dato file.
Tale valore viene memorizzato solo per la durata di una singola richiesta.
Le funzioni coinvolte sono stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(), is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype() e fileperms().
clearstatcache
24-Jan-2008 12:35
