Package | system.caching |
---|---|
Inheritance | class CMemCache » CCache » CApplicationComponent » CComponent |
Implements | ArrayAccess, ICache, IApplicationComponent |
Since | 1.0 |
Source Code | framework/caching/CMemCache.php |
array( 'components'=>array( 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array( 'host'=>'server1', 'port'=>11211, 'weight'=>60, ), array( 'host'=>'server2', 'port'=>11211, 'weight'=>40, ), ), ), ), )In the above, two memcache servers are used: server1 and server2. You can configure more properties of every server, including: host, port, persistent, weight, timeout, retryInterval, status. See https://www.php.net/manual/en/function.memcache-addserver.php for more details.
Property | Type | Description | Defined By |
---|---|---|---|
behaviors | array | the behaviors that should be attached to this component. | CApplicationComponent |
hashKey | boolean | whether to md5-hash the cache key for normalization purposes. | CCache |
isInitialized | boolean | Checks if this application component has been initialized. | CApplicationComponent |
keyPrefix | string | a string prefixed to every cache key so that it is unique. | CCache |
memCache | Memcache|Memcached | the memcache instance (or memcached if useMemcached is true) used by this component. | CMemCache |
serializer | array|boolean | the functions used to serialize and unserialize cached data. | CCache |
servers | array | list of memcache server configurations. | CMemCache |
useMemcached | boolean | whether to use memcached or memcache as the underlying caching extension. | CMemCache |
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
__isset() | Checks if a property value is null. | CComponent |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
add() | Stores a value identified by a key into cache if the cache does not contain this key. | CCache |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
delete() | Deletes a value with the specified key from cache | CCache |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
flush() | Deletes all values from cache. | CCache |
get() | Retrieves a value from cache with a specified key. | CCache |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getIsInitialized() | Checks if this application component has been initialized. | CApplicationComponent |
getMemCache() | Returns the memcache instance (or memcached if useMemcached is true) used by this component. | CMemCache |
getServers() | Returns list of memcache server configurations. Each element is a CMemCacheServerConfiguration. | CMemCache |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasProperty() | Determines whether a property is defined. | CComponent |
init() | Initializes this application component. | CMemCache |
mget() | Retrieves multiple values from cache with the specified keys. | CCache |
offsetExists() | Returns whether there is a cache entry with a specified key. | CCache |
offsetGet() | Retrieves the value from cache with a specified key. | CCache |
offsetSet() | Stores the value identified by a key into cache. | CCache |
offsetUnset() | Deletes the value with the specified key from cache | CCache |
raiseEvent() | Raises an event. | CComponent |
set() | Stores a value identified by a key into cache. | CCache |
setServers() | Sets list of memcache server configurations. Each element must be an array with the following keys: host, port, persistent, weight, timeout, retryInterval, status. | CMemCache |
Method | Description | Defined By |
---|---|---|
addValue() | Stores a value identified by a key into cache if the cache does not contain this key. | CMemCache |
deleteValue() | Deletes a value with the specified key from cache | CMemCache |
flushValues() | Deletes all values from cache. | CMemCache |
generateUniqueKey() | CCache | |
getValue() | Retrieves a value from cache with a specified key. | CMemCache |
getValues() | Retrieves multiple values from cache with the specified keys. | CMemCache |
normalizeDuration() | Normalizes duration value. | CMemCache |
setValue() | Stores a value identified by a key in cache. | CMemCache |
the memcache instance (or memcached if useMemcached is true) used by this component.
list of memcache server configurations. Each element is a CMemCacheServerConfiguration.
whether to use memcached or memcache as the underlying caching extension. If true memcached will be used. If false memcache. will be used. Defaults to false.
protected boolean addValue(string $key, string $value, integer $duration)
| ||
$key | string | the key identifying the value to be cached |
$value | string | the value to be cached |
$duration | integer | the number of seconds in which the cached value will expire. 0 means never expire. |
{return} | boolean | true if the value is successfully stored into cache, false otherwise |
protected function addValue($key,$value,$duration)
{
$expire = $this->normalizeDuration($duration);
return $this->useMemcached ? $this->_cache->add($key,$value,$expire) : $this->_cache->add($key,$value,0,$expire);
}
Stores a value identified by a key into cache if the cache does not contain this key. This is the implementation of the method declared in the parent class.
protected boolean deleteValue(string $key)
| ||
$key | string | the key of the value to be deleted |
{return} | boolean | if no error happens during deletion |
protected function deleteValue($key)
{
return $this->_cache->delete($key, 0);
}
Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
protected boolean flushValues()
| ||
{return} | boolean | whether the flush operation was successful. |
protected function flushValues()
{
return $this->_cache->flush();
}
Deletes all values from cache. This is the implementation of the method declared in the parent class.
public Memcache|Memcached getMemCache()
| ||
{return} | Memcache|Memcached | the memcache instance (or memcached if useMemcached is true) used by this component. |
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;
}
}
public array getServers()
| ||
{return} | array | list of memcache server configurations. Each element is a CMemCacheServerConfiguration. |
public function getServers()
{
return $this->_servers;
}
protected string|boolean getValue(string $key)
| ||
$key | string | a unique key identifying the cached value |
{return} | string|boolean | the value stored in cache, false if the value is not in the cache or expired. |
protected function getValue($key)
{
return $this->_cache->get($key);
}
Retrieves a value from cache with a specified key. This is the implementation of the method declared in the parent class.
protected array getValues(array $keys)
| ||
$keys | array | a list of keys identifying the cached values |
{return} | array | a list of cached values indexed by the keys |
protected function getValues($keys)
{
return $this->useMemcached ? $this->_cache->getMulti($keys) : $this->_cache->get($keys);
}
Retrieves multiple values from cache with the specified keys.
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);
}
Initializes this application component. This method is required by the IApplicationComponent interface. It creates the memcache instance and adds memcache servers.
protected int normalizeDuration(int $duration)
| ||
$duration | int | |
{return} | int |
protected function normalizeDuration($duration)
{
if ($duration < 0) {
return 0;
}
if ($duration < 2592001) {
return $duration;
}
return $duration + time();
}
Normalizes duration value. Ported code from yii2 after identifying issue with memcache falsely handling short term duration based on unix timestamps
public void setServers(array $config)
| ||
$config | array | list of memcache server configurations. Each element must be an array with the following keys: host, port, persistent, weight, timeout, retryInterval, status. |
public function setServers($config)
{
foreach($config as $c)
$this->_servers[]=new CMemCacheServerConfiguration($c);
}
protected boolean setValue(string $key, string $value, integer $duration)
| ||
$key | string | the key identifying the value to be cached |
$value | string | the value to be cached |
$duration | integer | the number of seconds in which the cached value will expire. 0 means never expire. |
{return} | boolean | true if the value is successfully stored into cache, false otherwise |
protected function setValue($key,$value,$duration)
{
$expire = $this->normalizeDuration($duration);
return $this->useMemcached ? $this->_cache->set($key,$value,$expire) : $this->_cache->set($key,$value,0,$expire);
}
Stores a value identified by a key in cache. This is the implementation of the method declared in the parent class.
Signup or Login in order to comment.