ProfiPHPProfiPHP
Категория: Функции для работы с файловой системой

Функция Clearstatcache

Функция Clearstatcache очищает кэш состояния файлов.
void clearstatcache([ bool $clear_realpath_cache = false [, string $filename ]] )
Для обеспечения большей производительности при использовании некоторых функций для работы с файловой системой, PHP кеширует результаты их выполнения. Однако, в некоторых случаях вам может потребоваться очистка этого кэша. Например, когда ваш скрипт несколько раз проверяет состояние одного и того же файла, который может быть изменен или удален во время выполнения скрипта, вы можете захотеть очистить кэш состояния. В этом случае необходимо использовать функцию Clearstatcache для очистки в PHP кэшированной информации об указанном файле.

Обратите внимание, что PHP не кэширует информацию о несуществующих файлах. Так что если вы вызовете File_exists на несуществующем файле, она будет возвращать FALSE до тех пор, пока вы не создадите этот файл. Если же вы создадите файл, она будет возвращать TRUE даже если затем вы его удалите. Однако, функция Unlink очистит данный кэш автоматически.

Данная функция кэширует информацию об определенных файлах, поэтому имеет смысл вызывать Clearstatcache только в том случае, если вы совершаете несколько операций с одним и тем же файлом и не хотите получать кэшированную информацию об этом файле.

Параметр Clear_realpath_cache указывает, очищать кэш Realpath или нет.

Параметр Filename указывает, очистить кэш Realpath и Stat только для определенного файла, используется только если параметр Clear_realpath_cache установлен в TRUE.

Функция Clearstatcache не возвращает значения после выполнения.

Пример использования:
var_dump( is_file( $_SERVER['DOCUMENT_ROOT'].'/file.txt' ) );
sleep( 10 );
clearstatcache( );
var_dump( is_file( $_SERVER['DOCUMENT_ROOT'].'/file.txt' ) );
Если в течении 10 секунд, после первой проверки функцией Is_file, физически удалить файл File.txt, функция Clearstatcache очистит кеш, и второй вызов вызов Is_file покажет правильный результат:
bool(true) bool(false) 

Добавить комментарий

Имя:
Текст комментария: