[[yii\caching\TagDependency]]: Связывает кэшированные данные элемента с одним или несколькими тегами. Вы можете аннулировать кэширование данных элементов с заданным тегом(тегами) по вызову.
Yii::$app->cache->set('report_'.$_GET['DATE_REPORT'].'', $sql, 3600, new TagDependency(['tags' => 'report_'.$_GET['DATE_REPORT'].''])); // ключ и тег 'report_'.$_GET['DATE_REPORT'].''
Юзера запрашивают отчёты по разным датам. Тем самым создаются кеши с соответствующими ключами.
Например, у нас есть 4 кеша за 01.06.2018, 10.06, 19.06, 20.06.
Есть функционал, в котором юзера могут изменять данные в отчёте за прошлые даты.
Таким образом, если юзер изменит отчёт за 10.06.2018, то мне нужно удалить кеш отчёта за 10.06.2018 и за 19.06, 20.06, т.к. данные более не актуальны. Но не за 01.06, т.к. отчётная дата еще не наступила.
Как мне узнать какие уже есть ключи(теги) кеша для корректного удаления нужных кешей?
Валера, Первый вариант, это попробовать изучить компонент Yii::$app->cache на предмет хранения кеша и зависимостей к ним, оттуда и вытащить соотвествующие теги.
Второй вариант это рассмотреть другие варианты зависимостей кеша. Возможно есть более подходящий. Например если юзер меняет какой либо отчет, то менять также какой либо флаг (тут как вариант использовать дату последнего изменения) и по ней выстраивать зависимость от результата sql запроса (DbDependency).
P.S. Лучше избежать такие ключи "report_'.$_GET['DATE_REPORT'] " так как они напрямую зависят от гет запроса, в который можно руками что угодно вписать