MZZ.Framework 1.0
Разделы

10.2 Cache

10.2.1 Обзор
10.2.2 Конфигурирование
10.2.3 Использование

10.2.1 Обзор

Пакет cache предназначен для кеширования данных.

10.2.2 Конфигурирование

Работа с пакетом начинается с процесса его конфигурирования. В конфигурационном файле приложения вы можете определить новые конфигурации для cache, которые будут определять тип хранилища, время жизни данных и специфические для хранилищ свойства (путь хранения, префикс, итд).

Существует набор конфигураций по умолчанию:

Название Хранилище Опции Описание
fast file
'params' => array(
    'path' => systemConfig::$pathToTemp . DIRECTORY_SEPARATOR . 'cache',
    'prefix' => 'fast_',
    'expire' => 180)
Предназначен для хранения часто изменяющихся данных, которые по истечении очень короткого срока времени (180 секунд по умолчанию) должны будут устареть и заменены на свежие данные. Данные хранятся в поддиректории cache, временной директории проекта.
session session
'params' => array('expire' => 1800)
Предназначен для хранения данных, имеющих свою актуальность только в пределах пользовательской сессии. Стоит помнить, что данные, в этом случае, будут независимы для каждой из сессий и из одной сессии нельзя будет получить данные другой.
long file
'params' => array(
    'path' => systemConfig::$pathToTemp . DIRECTORY_SEPARATOR . 'cache',
    'prefix' => 'long_',
    'expire' => 86400)
Конфигурация аналогичная конфигурации fast, но предназначены наоборот - для хранения редко изменяющихся данных. Время хранения по умолчанию - сутки.
memory memory Предназначен для хранения данных, имеющих свою актуальность только в пределах вызова скрипта. Данные хранятся в оперативной памяти и уничтожаются после завершения выполнения скрипта.
default Конфигурация, которая будет использована в случае, если при получении объекта кэша не была указана любая из существующих конфигураций. По умолчанию является синонимом на конфигурацию fast.

В дополнение к этим конфигурациям вы можете добавить в своём приложении свои. Для этого в массив systemConfig::$cache просто необходимо добавить описание новой конфигурации. Ключ массива с конфигурацией - будет служить её именем.

Например, для добавления конфигурации кэша с именем myMemcacheConfig, которая бы хранила данные в memcache-хранилище нужно добавить следующие строки:

systemConfig::$cache['myMemcacheConfig'] = array(
    'backend' => 'memcache'
);

Если вам нужно изменить параметры стандартных конфигураций, то просто переопределите соответствующие ключи массива systemConfig::$cache.

Например, чтобы кэш fast начал работать с memcache вместо файлов, в конфигурационном файле нужно прописать:

systemConfig::$cache['fast'] = array(
    'backend' => 'memcache'
);

10.2.3 Использование

Работа с пакетом cache происходит единообразно для всех типов хранилищ и всех конфигураций. Для начала работы необходимо получить объект с нужной конфигурацией из toolkit'а:

$cache = $this->toolkit->getCache('fast');

В результате будет возвращён объект типа cache, реализующий интерфейс:

Метод Аргументы Возвращаемое значение Описание
get
  • string $key - извлекаемый ключ;
  • [mixed &$result = null] - извлекаемое значение.
Boolean:
  • true - искомое значение найдено;
  • false - в противном случае.
Этот метод используется для получения значений, сохранённых в кэше.
if ($cache->get('key', $value)) {
    echo 'Найденное значение: ' . $value;
} else {
    echo 'Значение не найдено';
}
set
  • string $key - сохраняемый ключ;
  • mixed $val - сохраняемое значение;
  • [array $tags = array()] - массив тегов, проассоциированных с данным ключом;
  • [int $expire = null] - время жизни ключа, в секундах.
Mixed: возвращаемое значение зависит от используемого хранилища. Обычно - true/false. Этот метод используется для сохранения значений в кэше.
$data = array(1, 'some string');
$cache->set('key', $data);
Сохранение данных с пометкой их тегами "sample" и "documentation" и временем жизни в 1 минуту:
$data = 'some data to cache';
$cache->set('key', $data, array('sample', 'documentation'), 60);
С одним и тем же тегом может быть проассоциировано любое число ключей. И наоборот: не накладывается никаких разумных ограничений на число тегов, проассоциированных с ключом.
delete
  • string $key - удаляемый ключ.
Mixed: возвращаемое значение зависит от используемого хранилища. Обычно - true/false. Этот метод используется для удаления значений из кэша.
$cache->delete('key');
clear
  • string $tag - имя очищаемого тега.
Mixed: возвращаемое значение зависит от используемого хранилища. Обычно - true/false. Этот метод используется для удаления значений из кэша по связанному с ним тегу. Если ключей, ассоциированных с указанным тегом, несколько, тогда будут удалены все вхождения.
$data = 'some data to cache';
$cache->set('key', $data, array('sample', 'documentation'), 60);
 
$cache->clear('sample');
В примере был удалён установленный ранее ключ 'key', потому как при установке его значения одним из тегов был указан тег 'sample'.
flush void Этот метод используется для очистки содержимого всего хранилища.
$cache->flush();

В зависимости от типа хранилища, могут очищаться все данные в нём (как в memcache) или только относящиеся к данной конфигурации (как в file).