Содержание


Adapter


Zend\Cache\Storage\Adapter, ЗФ2, Zend Framework 2, ZF2








Основные параметры конфигурации

Следующие параметры конфигурации определены для Zend\Cache\Storage\Adapter\AdapterOptions и доступны для всех поддерживаемых адаптеров.

Опция      Тип данных     По умолчанию      Описание

- ttl                   integer          0                     Время жизни

- namespace  string            «»                   Пространство имен, где будет использоваться кэш

- key_pattern  nullstring   null                 Шаблон(Pattern), использующийся для проверки ключей кэша

- keys               boolean       null                 Включение / выключение чтения данных из кэша

- readable       boolean       null                 Включение / выключение записи данных в кэш

 


Интерфейс Хранение данных (The StorageInterface)

 

Основным интерфейсом, реализованным во всех адаптерах является Zend\Cache\StorageStorageInterface.

getItem(string $key, boolean & $success = null, mixed & $casToken = null)

Загрузка элемента с заданным ключом

Если элемент существует, то параметр $success устанавливается в «true», потом устанавливается параметр $casToken и возвращается смешанное значение элемента.

Если такого элемента не существует, то параметр $success устанавливается в значение «false» и возвращается null. Тип возвращаемого значения: mixed (смешаный)

 

getItems(array $keys)

Загрузка всех элементов по заданным ключам. Возвращается: пары ключ-начение. Тип возвращаемых данных: array (массив)

 

hasItem(string $key)

Проверяет, существует ли элемент.

Тип возвращаемых данных: boolean (булевое значение «true» или «false»)

 

hasItems(array $keys)

Проверка нескольких элементов. Тип возвращаемых данных: string (строка)

 

getMetadata(string $key)

Получить метаданные элемента. Тип возвращаемых данных: array|boolean

 

getMetadatas(array $keys)

Получить метаданные нескольких элементов. Тип возвращаемых данных: array

 

setItem(string $key, mixed $value)

Сохранить элемент. возвращаемых данных: boolean

 

setItems(array $keyValuePairs)

Сохранить несколько элементов. Тип возвращаемых данных: boolean

 

addItem(string $key, mixed $value)

Добавить элемент. Тип возвращаемых данных: boolean

 

addItems(array $keyValuePairs)

Добавить несколько элементов. Тип возвращаемых данных: boolean

 

replaceItem(string $key, mixed $value)

Заменить элемент. Тип возвращаемых данных: boolean

 

replaceItems(array $keyValuePairs)

Заменить несколько элементов. Тип возвращаемых данных: boolean

 

checkAndSetItem(mixed $token, string $key, mixed $value)

Установить элемент, только если есть маркер. Маркер получается от getItem(). Проверяется, был ли изменен элемент перед перезаписью. Тип возвращаемых данных: boolean

 

touchItem(string $key)

Сброс времени жизни (lifetime) элемента. Тип возвращаемых данных: boolean

 

touchItems(array $keys)

Сброс времени жизни (lifetime) нескольких элементов. Тип возвращаемых данных: boolean

 

removeItem(string $key)

Удалить элемент. Тип возвращаемых данных: boolean

 

removeItems(array $keys)

Удалить несколько элементов. Тип возвращаемых данных: boolean

 

incrementItem(string $key, int $value)

Увеличение (инкримент) элемента. Тип возвращаемых данных: integer|boolean

 

incrementItems(array $keyValuePairs)

Увеличение (инкримент) нескольких элементов. Тип возвращаемых данных: boolean

 

decrementItem(string $key, int $value)

Декремент элемента. Тип возвращаемых данных: integer|boolean

 

 

decrementItems(array $keyValuePairs)

Декремент нескольких элементов. Тип возвращаемых данных: boolean

 

getCapabilities()

Возможности этого типа хранилища. Тип возвращаемых данных: Zend\Cache\Storage\Capabilities

 


The AvailableSpaceCapableInterface

Zend\Cache\Storage\AvailableSpaceCapableInterface реализует метод, позволяющий получить текущее доступное пространство для хранения.

getAvailableSpace()

Получить свободной пространство в байтах. Тип возвращаемых данных: integer|float

 


The TotalSpaceCapableInterface

Zend\Cache\Storage\TotalSpaceCapableInterface реализует метод, позволяющий получить общее пространство хранения.

getTotalSpace()

Получить общее пространство в байтах. Тип возвращаемых данных: integer|float

 


The ClearByNamespaceInterface

Zend\Cache\Storage\ClearByNamespaceInterfaceреализует метод, позволяющий очистить все элементы данного пространства имен.

clearByNamespace(string $namespace)

Удаление элементов данного пространства имен. Тип возвращаемых данных: boolean

 


The ClearByPrefixInterface

ZendCacheStorageClearByPrefixInterface реализует метод, позволяющий очистить все элементы с заданным префиксом (в пределах заданного текущего пространства имен)

clearByPrefix(string $prefix)

Тип возвращаемых данных: boolean

 


The ClearExpiredInterface

Zend\Cache\Storage\ClearExpiredInterface реализует метод, позволяющий очистить все устаревшие элементы (в пределах заданного текущего пространства имен)

clearExpired()

Тип возвращаемых данных: boolean

 



The FlushableInterface

Zend\Cache\Storage\FlushableInterface реализует метод, позволяющий очистить хранилище полностью.

flush()

Тип возвращаемых данных: boolean

 

 


The IterableInterface

Zend\Cache\Storage\IterableInterface реализует метод, позволяющий получить итератор для перебора элементов в хранилище. Он расширяет IteratorAggregate, в силу чего появляется возможность перебора непосредственно в хранилище используя foreach.

getIterator()

Типвозвращаемыхданных:Zend\Cache\Storage\IteratorInterface

 


The OptimizableInterface

Zend\Cache\Storage\OptimizableInterfaceреализует метод, позволяющий запустить процесс оптимизации в хранилише.

optimize()

Тип возвращаемых данных: boolean

 

 


The TaggableInterface

Zend\Cache\Storage\TaggableInterface реализует методы, позволяющие отметить элементы с одним или несколькими тегами, а потом очистить элементы, с соответствующими тегами.

setTags(string $key, string[] $tags)

Задаёт теги для элемента с заданным ключом. Пустой массив выберет все теги. Тип возвращаемых данных: boolean

 

getTags(string $key)

Получить теги элемента с заданным ключом. Тип возвращаемых данных: string|false

 

clearByTags(string[] $tags, boolean $disjunction = false)

Удаление элементов с заданными тегами.

Если $disjunction установлено в «true», то совпадать должен только один из заданных тегов. Если установлено в «false», то слвпадение должно быть по всем заданным тегам.

Тип возвращаемых данных: boolean

 

 


Адаптер APC

Zend\Cache\Storage\Adapter\Apc храниткешируемыеэлементывовместноиспользуемойпамятиспомощьюрасширения PHP - APC (Alternative PHP Cache).

Этот адаптер реализует следующие интерфейсы:

- ZendCache\Storage\StorageInterface

- Zend\Cache\Storage\AvailableSpaceCapableInterface

- Zend\Cache\Storage\ClearByNamespaceInterface

- Zend\Cache\Storage\ClearByPrefixInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\IterableInterface

- Zend\Cache\Storage\TotalSpaceCapableInterface

Возможности                                             Значения

supportedDatatypes           null, boolean, integer, double, string, array (serialized), object (serialized)

supportedMetadata          internal_key, atime, ctime, mtime, rtime, size, hits, ttl

minTtl                              1

maxTtl                               0

staticTtl                      true

ttlPrecision                       1

useRequestTime              <ini value of apc.use_request_time>

expiredReadfalse

maxKeyLength                  5182

namespaceIsPrefix          true

namespaceSeparator         <Option value of namespace_separator>

 

Особые опции адаптера:

namespace_separatorstring        ”:”   разделитель для пространства имен и префикса

 


Адаптер Dba

Zend\Cache\Storage\Adapter\Dba хранит кэшируемые элементы в dbm подобно БД, используя расширение PHP – dba.

Этот адаптер реализует следующие интерфейсы:

- Zend\Cache\Storage\StorageInterface

- Zend\Cache\Storage\AvailableSpaceCapableInterface

- Zend\Cache\Storage\ClearByNamespaceInterface

- Zend\Cache\Storage\ClearByPrefixInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\IterableInterface

- Zend\Cache\Storage\OptimizableInterface

- Zend\Cache\Storage\TotalSpaceCapableInterface

Возможности                                  Значения

supportedDatatypes           string, null => string, boolean => string, integer => string, double => string

supportedMetadata          <none>

minTtl                               0

maxKeyLength                  0

namespaceIsPrefix          true

namespaceSeparator         <Option value of namespace_separator>

 

Особые опции адаптера:

namespace_separator       string  ”:”        разделитель для пространства имен и префикса

pathname     string  “”         ПутькфайлуБД

mode  string  “c”       Режим для открытия БД.Для более подробного ознакомления почитайте про dba_open

handler          string  “flatfile”          имя обработчика, который будет использоваться для доступа к БД

Важно: Этот адаптер не поддерживает автоматическое удаление устаревших элементов.

 


Адаптер Filesystem

Zend\Cache\Storage\Adapter\Filesystem хранит кэшируемые элементы в файловой системе.

Этот адаптер реализует следующие интерфейсы:

- Zend\Cache\Storage\StorageInterface

- Zend\Cache\Storage\AvailableSpaceCapableInterface

- Zend\Cache\Storage\ClearByNamespaceInterface

- Zend\Cache\Storage\ClearByPrefixInterface

- Zend\Cache\Storage\ClearExpiredInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\IterableInterface

- Zend\Cache\Storage\OptimizableInterface

- Zend\CacheStorageTaggableInterface

- Zend\CacheStorageTotalSpaceCapableInterface

Возможности                      Значения

supportedDatatypes           string, null => string, boolean => string, integer => string, double => string

supportedMetadata           mtime, filespec, atime, ctime

minTtl                                1

maxTtl                                  0

staticTtl                              false

ttlPrecision                       1

useRequestTime              false

expiredRead                   true

maxKeyLength                  251

namespaceIsPrefix           true

namespaceSeparator         <Option value of namespace_separator>


Особые опции адаптера:

namespace_separator       string  ”:”  разделитель для пространства имен и префикса

cache_dir      string  “”   каталог для хранения кэш-файлов

clear_stat_cache     boolean         true  Включенли clearstatcache() ?

dir_level        integer           1   Определяет, сколько подкаталогов должно быть

dir_permission         integer false0700    Задание разрешения на создание новых каталогов

file_locking   boolean         true     блокировкипозаписи

file_permission        integerfalse0600    Задание разрешения на создание новых файлов

key_pattern   string  /^[a-z0-9_+-]*$/Di   Проверка на комбинацию клавиш

no_atime       boolean         true     Запрет «fileatime» как «atime» наметаданные

no_ctime      boolean         true    Запрет «filectime » как «ctime» наметаданные

umask            integerfalsefalse   Использовать umask для задания прав на файлы и директории

 


Адаптер Memcached

Zend\Cache\Storage\Adapter\Memcached хранит кэшируемые элементы по протоколу memcach. Использует расширение PHP memcached, основанное на Libmemcached.

Этот адаптер реализует следующие интерфейсы:

- Zend\Cache\Storage\StorageInterface

- Zend\Cache\Storage\AvailableSpaceCapableInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\TotalSpaceCapableInterface

 

Возможности                      Значения

supportedDatatypes           null, boolean, integer, double, string, array (serialized), object (serialized)

supportedMetadata<none>

minTtl1

maxTtl            0

staticTtl          true

ttlPrecision    1

useRequestTime     false

expiredReadfalse

maxKeyLength        255

namespaceIsPrefixtrue

namespaceSeparator         <none>

Особые опции адаптера:

servers           array   []          списоксерверовв [] = array(string host, integer port)

lib_options    array   []          Ассоциативный массив опций Libmemcached, ключи указывают на имя опции (без префикса «OPT_») или константа. Значение массива является значением параметра.

 


Адаптер Memory

Zend\Cache\Storage\Adapter\Memory хранит кэшируемые элементы в массиве.

Этот адаптер реализует следующие интерфейсы:

- Zend\Cache\Storage\StorageInterface

- Zend\Cache\Storage\AvailableSpaceCapableInterface

- Zend\Cache\Storage\ClearByPrefixInterface

- Zend\Cache\Storage\ClearExpiredInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\IterableInterface

- Zend\Cache\Storage\TaggableInterface

- Zend\Cache\Storage\TotalSpaceCapableInterface

Возможности                      Значения

supportedDatatypes           string, null, boolean, integer, double, array, object, resource

supportedMetadatamtime

minTtl1

maxTtl            <Value of PHP_INT_MAX>

staticTtl          false

ttlPrecision    0.05

useRequestTime     false

expiredReadtrue

maxKeyLength        0

namespaceIsPrefixfalse

 


Особые опции адаптера:

memory_limit            string integer            <50% of ini value memory_limit>  Определяет, сколькопамятиможетиспользовать PHP дляхраненияКЭШаспомощьюэтогоадаптера.

- Если количество используемой памяти превысит заданное значение, то выбросится исключение

- Число раное нулю или меньше него отменяет ограничение на использование памяти

-  При использовании числового значение, значение определят количество байт.Может быть использовано сокращенное значение


Важно: Все сохраненные значения будут утеряны после завершения работы скрипта.

 


Адаптер WinCache

Zend\Cache\Storage\Adapter\WinCache хранит кэшируемые элементы в совместно используемой памяти с помощью расширения PHP – WinCache.

Этот адаптер реализует следующие интерфейсы:

- Zend\Cache\Storage\StorageInterface

- Zend\Cache\Storage\AvailableSpaceCapableInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\TotalSpaceCapableInterface

Возможности                      Значения

supportedDatatypes           null, boolean, integer, double, string, array (serialized), object (serialized)

supportedMetadatainternal_key, ttl, hits, size

minTtl1

maxTtl            0

staticTtl          true

ttlPrecision    1

useRequestTime     <ini value of apc.use_request_time>

expiredReadfalse

namespaceIsPrefixtrue

namespaceSeparator         <Option value of namespace_separator>

 


Особые опции адаптера:

namespace_separator       string  ”:”        разделитель для пространства имен и префикса

 


Адаптер ZendServerDisk

Zend\Cache\Storage\Adapter\ZendServerDisk хранит кэшируемые элементы в файловой системе используя Zend Server Data Caching API.

Этот адаптер реализует следующие интерфейсы:

- Zend\Cache\Storage\StorageInterface

 - Zend\Cache\Storage\AvailableSpaceCapableInterface

- Zend\Cache\Storage\ClearByNamespaceInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\TotalSpaceCapableInterface

Возможности                      Значения

supportedDatatypes           null, boolean, integer, double, string, array (serialized), object (serialized)

supportedMetadata<none>

minTtl1

maxTtl            0

maxKeyLength        0

staticTtl          true

ttlPrecision    1

useRequestTime     false

expiredReadfalse

namespaceIsPrefixtrue

namespaceSeparator         ::

 


Адаптер ZendServerShm

Zend\Cache\Storage\Adapter\ZendServerShm хранит кэшируемые элементы в общей памяти используя Zend Server Data Caching API.

Этот адаптер реализует следующие интерфейсы:

- Zend\Cache\Storage\StorageInterface

- Zend\Cache\Storage\ClearByNamespaceInterface

- Zend\Cache\Storage\FlushableInterface

- Zend\Cache\Storage\TotalSpaceCapableInterface

Возможности                      Значения

supportedDatatypes           null, boolean, integer, double, string, array (serialized), object (serialized)

supportedMetadata<none>

minTtl1

maxTtl            0

maxKeyLength        0

staticTtl          true

ttlPrecision    1

useRequestTime     false

expiredReadfalse

namespaceIsPrefixtrue

namespaceSeparator         ::

 



Примеры

Базовое использование:

$cache   = Zend\Cache\StorageFactory::factory(array(
    'adapter' => array(
        'name' => 'filesystem'
    ),
    'plugins' => array(
        // Don't throw exceptions on cache errors
        'exception_handler' => array(
            'throw_exceptions' => false
        ),
    )
));
$key    = 'unique-cache-key';
$result = $cache->getItem($key, $success);
if (!$success) {
    $result = doExpansiveStuff();
    $cache->setItem($key, $result);
}

Получить несколько строк из БД:

// Instantiate the cache instance using a namespace for the same type of items
$cache   = Zend\Cache\StorageFactory::factory(array(
    'adapter' => array(
        'name'    => 'filesystem'
        // With a namespace we can indicate the same type of items
        // -> So we can simple use the db id as cache key
        'options' => array(
            'namespace' => 'dbtable'
        ),
    ),
    'plugins' => array(
        // Don't throw exceptions on cache errors
        'exception_handler' => array(
            'throw_exceptions' => false
        ),
        // We store database rows on filesystem so we need to serialize them
        'Serializer'
    )
));
 
// Load two rows from cache if possible
$ids     = array(1, 2);
$results = $cache->getItems($ids);
if (count($results) < count($ids)) {
    // Load rows from db if loading from cache failed
    $missingIds     = array_diff($ids, array_keys($results));
    $missingResults = array();
    $query          = 'SELECT * FROM dbtable WHERE id IN (' . implode(',', $missingIds) . ')';
    foreach ($pdo->query($query, PDO::FETCH_ASSOC) as $row) {
        $missingResults[ $row['id'] ] = $row;
    }
 
    // Update cache items of the loaded rows from db
    $cache->setItems($missingResults);
 
    // merge results from cache and db
    $results = array_merge($results, $missingResults);
}

Автор статьи: DuB