Имеется приложение. В определенные моменты, создается кеш некоторой выборки из БД:
public static function getAllHosts($by = 'id')
{
$_cache = Yii::$app->cache;
$key_cache_list_hosts = 'list_hosts_array_' . $by;
$dependency = new \yii\caching\DbDependency(['sql' => 'SELECT COUNT(*) FROM {{%hosts}}']);
$_hosts = $_cache->get($key_cache_list_hosts);
if ($_hosts === false) {
try {
$_hosts = static::find()->asArray()->indexBy($by)->all();
} catch (\Exception $e) {
echo "\n\nFatal error in function <Hosts/getAllHosts>!\n{$e->getMessage()}\nEnd...\n";
exit;
}
$_cache->set($key_cache_list_hosts, $_hosts, 3600 * 12, $dependency);
}
return $_hosts;
}
Также имеется код отвечающий за удаление этого кеша:
public static function deleteAllKeyHosts()
{
$_cache = Yii::$app->cache;
$key_cache = [];
$pref = 'list_hosts_array_';
$key_cache[] = $pref . 'id';
$key_cache[] = $pref . 'name';
$key_cache[] = $pref . 'comment';
foreach ($key_cache as $_key) {
$_cache->delete($_key);
}
}
Теперь о главном. Во время работы приложения, если создать упомянутый кеш и тут же вызвать функцию удаления, то все работает без нареканий. А вот если кеш был создан во время одного запроса к приложению, а потом другой запрос обращается к приложению с просьбой удаления данного кеша, то Yii2 данные ключи не находит, хотя они есть в папке @app/runtime/cache. Вопрос: как такое может быть?