FolderDependency - дополнительная зависимость для фреймворка Yii2, которая позволяет сбрасывать кэш при обнаружении изменений папки или содержащихся в ней файлов.
Используя Composer:
$ composer require iiifx-production/yii2-folder-dependency
или добавить в composer.json, в секцию require:
"iiifx-production/yii2-folder-dependency": "0.1.*@stable"
use iiifx\cache\dependency\FolderDependency;
$cache = Yii::$app->cache;
# Проверяем наличие кэша
if ( ( $cachedData = $cache->get( 'some-cache-key' ) ) === FALSE ) {
# Кэша нет, подготавливаем данные
$cachedData = [ /* .. */ ];
# Создаем зависимость для кэша
$folderDependency = new FolderDependency( [
'folder' => '/path/to/folder'
] );
# Кэшируем данные
$cache->set( 'some-cache-key', $cachedData, 0, $folderDependency );
}
# Пользуемся данными
var_export( $cachedData );
В данном примере кэш будет создан при первом запросе. При последующих запросах будут использоваться закэшариванные данные, пока папка folder или размещенные в ней файлы не изменятся. Любое изменение файла внутри folder будет обнаружено и кэш потеряет свою актуальность. Не имеет значения какое количество файлов будет содержать folder, это никак не повлияет на производительность. Зависимость проверяет лишь папку, не затрагивая файлы, который в ней содержаться.
Для создания зависимости от нескольких папок пути можно передать списком:
$foldersDependency = new FolderDependency( [
'folder' => [
'/path/to/folder1',
'/path/to/folder2',
'/path/to/folder3',
]
] );
В этом случае кэш потеряет свою актуальность при изменении любой папки или любого файла внутри папок.
Зависимость не обнаружит изменения во вложенных папках, которые размещены внутри указанных в folder.
Флаг reusable по умолчанию установлен в TRUE.
В данный момент не реализованы.