CMemCache
| Пакет | system.caching |
|---|---|
| Наследование | класс CMemCache » CCache » CApplicationComponent » CComponent |
| Реализует | ArrayAccess, ICache, IApplicationComponent |
| С версии | 1.0 |
| Исходный код | framework/caching/CMemCache.php |
CMemCache можно настроить со списком серверов memcache, установив свойство servers. По умолчанию CMemCache предполагает наличие сервера memcache, работающего на localhost на порту 11211.
См. руководство по CCache для общих операций с кешем, поддерживаемых CMemCache.
Обратите внимание, что нет мер безопасности для защиты данных в memcache. К данным в memcache может получить доступ любой процесс, работающий в системе.
Чтобы использовать CMemCache в качестве компонента кеширования, настройте приложение следующим образом:
array(
'components'=>array(
'cache'=>array(
'class'=>'CMemCache',
'servers'=>array(
array(
'host'=>'server1',
'port'=>11211,
'weight'=>60,
),
array(
'host'=>'server2',
'port'=>11211,
'weight'=>40,
),
),
),
),
)
В примере выше используются два сервера memcache: server1 и server2. Вы можете настроить дополнительные свойства каждого сервера, включая: хост, порт, постоянное соединение, вес, таймаут, интервал повторных попыток, статус. См. http://www.php.net/manual/en/function.memcache-addserver.php для получения более подробной информации. CMemCache также может использоваться с memcached. Для этого установите useMemcached в значение true.
Свойства Public
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| behaviors | массив | поведения, которые должны быть присоединены к данному компоненту. | CApplicationComponent |
| hashKey | boolean | используется ли md5-хеширование ключа кеша для целей нормализации. | CCache |
| isInitialized | boolean | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| keyPrefix | строка | строка, добавляемая в префикс каждого ключа кеша, чтобы он был уникальным. | CCache |
| memCache | Memcache|Memcached | экземпляр memcache (или memcached, если useMemcached равен true), используемый этим компонентом. | CMemCache |
| serializer | массив|boolean | функции, используемые для сериализации и десериализации данных кеша. | CCache |
| servers | массив | список конфигураций серверов memcache. | CMemCache |
| useMemcached | boolean | используется ли memcached или memcache в качестве базового расширения кеширования. | CMemCache |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с заданным именем, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| add() | Сохраняет значение, идентифицируемое ключом, в кэш, если этот ключ в кэше отсутствует. | CCache |
| asa() | Возвращает объект поведения с заданным именем. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| delete() | Удаляет значение с указанным ключом из кэша. | CCache |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединённое поведение. | CComponent |
| disableBehaviors() | Отключает все присоединённые к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает присоединённое поведение. | CComponent |
| enableBehaviors() | Включает все присоединённые к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. | CComponent |
| flush() | Удаляет все значения из кэша. | CCache |
| get() | Извлекает значение из кэша по указанному ключу. | CCache |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| getIsInitialized() | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| getMemCache() | Возвращает экземпляр memcache (или memcached, если useMemcached имеет значение true), используемый этим компонентом. | CMemCache |
| getServers() | Возвращает список конфигураций серверов memcache. Каждый элемент — CMemCacheServerConfiguration. | CMemCache |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, имеются ли присоединённые обработчики для события с заданным именем. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует этот компонент приложения. | CMemCache |
| mget() | Извлекает несколько значений из кэша по указанным ключам. | CCache |
| offsetExists() | Возвращает, существует ли запись в кэше с указанным ключом. | CCache |
| offsetGet() | Извлекает значение из кэша по указанному ключу. | CCache |
| offsetSet() | Сохраняет значение, идентифицируемое ключом, в кэш. | CCache |
| offsetUnset() | Удаляет значение с указанным ключом из кэша. | CCache |
| raiseEvent() | Вызывает событие. | CComponent |
| set() | Сохраняет значение, идентифицируемое ключом, в кэш. | CCache |
| setServers() | Устанавливает список конфигураций серверов memcache. Каждый элемент должен быть массивом со следующими ключами: host, port, persistent, weight, timeout, retryInterval, status. | CMemCache |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| addValue() | Сохраняет значение, идентифицируемое ключом, в кэш, если этот ключ в кэше отсутствует. | CMemCache |
| deleteValue() | Удаляет значение с указанным ключом из кэша. | CMemCache |
| flushValues() | Удаляет все значения из кэша. | CMemCache |
| generateUniqueKey() | CCache | |
| getValue() | Извлекает значение из кэша по указанному ключу. | CMemCache |
| getValues() | Извлекает несколько значений из кэша по указанным ключам. | CMemCache |
| setValue() | Сохраняет значение, идентифицируемое ключом, в кэше. | CMemCache |
Подробное описание свойств
memCache свойство только для чтения
public Memcache|Memcached getMemCache()
экземпляр memcache (или memcached, если useMemcached имеет значение true), используемый этим компонентом.
servers свойство
public array getServers()
public void setServers(array $config)
список конфигураций серверов memcache. Каждый элемент — CMemCacheServerConfiguration.
useMemcached свойство
public boolean $useMemcached;
использовать memcached или memcache в качестве базового расширения кэширования. Если true, используется memcached. Если false, используется memcache. По умолчанию false.
Подробное описание методов
addValue() метод
protected boolean addValue(string $key, string $value, integer $expire) | ||
| $key | string | ключ, идентифицирующий значение для кэширования |
| $value | string | значение для кэширования |
| $expire | integer | количество секунд, в течение которых кэшированное значение будет действовать. 0 — никогда не истекает. |
| {return} | boolean | true, если значение успешно сохранено в кэш, иначе false |
protected function addValue($key,$value,$expire)
{
if($expire>0)
$expire+=time();
else
$expire=0;
return $this->useMemcached ? $this->_cache->add($key,$value,$expire) : $this->_cache->add($key,$value,0,$expire);
}
Сохраняет значение, идентифицируемое ключом, в кэше, если в кэше нет этого ключа. Это реализация метода, объявленного в родительском классе.
deleteValue() метод
protected boolean deleteValue(string $key) | ||
| $key | строка | ключ значения, которое нужно удалить |
| {return} | логическое значение | если удаление произошло без ошибок |
protected function deleteValue($key)
{
return $this->_cache->delete($key, 0);
}
Удаляет значение с указанным ключом из кэша. Это реализация метода, объявленного в родительском классе.
flushValues() метод (доступен начиная с v1.1.5)
protected boolean flushValues() | ||
| {return} | логическое значение | успешность операции сброса. |
protected function flushValues()
{
return $this->_cache->flush();
}
Удаляет все значения из кэша. Это реализация метода, объявленного в родительском классе.
getMemCache() метод
public Memcache|Memcached getMemCache() | ||
| {return} | Memcache|Memcached | экземпляр memcache (или memcached, если useMemcached равен true), используемый этим компонентом. |
public function getMemCache()
{
if($this->_cache!==null)
return $this->_cache;
else
{
$extension=$this->useMemcached ? 'memcached' : 'memcache';
if(!extension_loaded($extension))
throw new CException(Yii::t('yii',"CMemCache requires PHP {extension} extension to be loaded.",
array('{extension}'=>$extension)));
return $this->_cache=$this->useMemcached ? new Memcached : new Memcache;
}
}
getServers() метод
public array getServers() | ||
| {return} | массив | список конфигураций серверов memcache. Каждый элемент — это CMemCacheServerConfiguration. |
public function getServers()
{
return $this->_servers;
}
getValue() метод
protected string|boolean getValue(string $key) | ||
| $key | строка | уникальный ключ, идентифицирующий кэшируемое значение |
| {return} | строка|логическое значение | значение, хранящееся в кэше; ложь, если значения нет в кэше или оно истекло. |
protected function getValue($key)
{
return $this->_cache->get($key);
}
Извлекает значение из кэша по заданному ключу. Это реализация метода, объявленного в родительском классе.
getValues() метод
protected array getValues(array $keys) | ||
| $keys | массив | список ключей, идентифицирующих кэшируемые значения |
| {return} | массив | список кэшированных значений, индексированных по ключам |
protected function getValues($keys)
{
return $this->useMemcached ? $this->_cache->getMulti($keys) : $this->_cache->get($keys);
}
Извлекает несколько значений из кэша по заданным ключам.
init() метод
public void init() |
public function init()
{
parent::init();
$servers=$this->getServers();
$cache=$this->getMemCache();
if(count($servers))
{
foreach($servers as $server)
{
if($this->useMemcached)
$cache->addServer($server->host,$server->port,$server->weight);
else
$cache->addServer($server->host,$server->port,$server->persistent,$server->weight,$server->timeout,$server->retryInterval,$server->status);
}
}
else
$cache->addServer('localhost',11211);
}
Инициализирует компонент приложения. Этот метод требуется интерфейсом IApplicationComponent. Он создает экземпляр memcache и добавляет серверы memcache.
setServers() метод
public void setServers(array $config) | ||
| $config | массив | список конфигураций серверов memcache. Каждый элемент должен быть массивом со следующими ключами: host, port, persistent, weight, timeout, retryInterval, status. |
public function setServers($config)
{
foreach($config as $c)
$this->_servers[]=new CMemCacheServerConfiguration($c);
}
setValue() метод
protected boolean setValue(string $key, string $value, integer $expire) | ||
| $key | строка | ключ, идентифицирующий значение для кэширования |
| $value | строка | значение для кэширования |
| $expire | целое число | количество секунд, после которого кэшированное значение истечет. 0 — никогда не истекает. |
| {return} | логическое значение | истина, если значение успешно сохранено в кэше; ложь в противном случае |
protected function setValue($key,$value,$expire)
{
if($expire>0)
$expire+=time();
else
$expire=0;
return $this->useMemcached ? $this->_cache->set($key,$value,$expire) : $this->_cache->set($key,$value,0,$expire);
}
Сохраняет значение, идентифицируемое ключом, в кэше. Это реализация метода, объявленного в родительском классе.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CMemCache