Есть отчёт, который формируется из базы по отчетной дате (DATE_REP). Он довольно большой, поэтому использую кеш.
Код: Выделить всё
$fields = Yii::$app->db->createCommand("select * from TITLES where DATE_REP = ".$_GET['DATE_REP']."");
Yii::$app->cache_report->set('report_'.$_GET['DATE_REP'].'', $fields, 86400, new TagDependency(['tags' => 'report_'.$_GET['DATE_REP'].'']));
Код компонента:
Код: Выделить всё
'cache_report' => [
'class' => 'yii\caching\FileCache',
'keyPrefix' => 'report_'.$_GET['DATE_REP'].'?',
'cachePath' => '@runtime/cache/report',
],
Код: Выделить всё
$keys_only = Array
(
[0] => 01.06.16
[1] => 01.07.16
[2] => 01.12.16
[3] => 01.04.16
[4] => 01.08.16
[5] => 01.09.16
[6] => 01.10.16
[7] => 01.05.16
[8] => 01.02.16
[9] => 01.01.16
[10] => 01.03.16
[11] => 01.11.16
)
Код: Выделить всё
for($d = 0; $d < count($keys_only); $d++){
if(\DateTime::createFromFormat("d.m.y", "".$keys_only[$d]."") >= \DateTime::createFromFormat("d.m.y", "".$_GET['DATE_REP']."")){
echo('<br></br> > '.$keys_only[$d].' больше '.$_GET['DATE_REP'].' report_'.$keys_only[$d].' --> удалить ');
// удаление кеша
Yii::$app->cache_report->delete('report_'.$keys_only[$d].'');
// TagDependency::invalidate(Yii::$app->cache_report, 'report_'.$keys_only[$d].'');
// удаление из таблицы
Yii::$app->DB->createCommand("DELETE FROM YII_CACHE_INFO WHERE KEY = 'report_".$keys_with[$d]['DATE_REP']."'")->execute();
} else{
echo('<br></br> < '.$keys_only[$d].' меньше '.$_GET['DATE_REP'].' --> оставить ');
}
}
Код: Выделить всё
> 01.06.16 больше 02.05.16 report_01.06.16 --> удалить
> 01.07.16 больше 02.05.16 report_01.07.16 --> удалить
> 01.12.16 больше 02.05.16 report_01.12.16 --> удалить
< 01.04.16 меньше 02.05.16 --> оставить
> 01.08.16 больше 02.05.16 report_01.08.16 --> удалить
> 01.09.16 больше 02.05.16 report_01.09.16 --> удалить
> 01.10.16 больше 02.05.16 report_01.10.16 --> удалить
< 01.05.16 меньше 02.05.16 --> оставить
< 01.02.16 меньше 02.05.16 --> оставить
< 01.01.16 меньше 02.05.16 --> оставить
< 01.03.16 меньше 02.05.16 --> оставить
> 01.11.16 больше 02.05.16 report_01.11.16 --> удалить
(Yii::$app->cache_report->delete('report_01.06.12') и другие даты) не удаляют кеш. Пробовал через tag - таже ситуация.
P.S. как узнать существующие в кеше ключи (или теги)?