Package | system.caching |
---|---|
Inheritance | class CFileCache » CCache » CApplicationComponent » CComponent |
Implements | ArrayAccess, ICache, IApplicationComponent |
Since | 1.0.6 |
Version | $Id$ |
Source Code | framework/caching/CFileCache.php |
Property | Type | Description | Defined By |
---|---|---|---|
behaviors | array | the behaviors that should be attached to this component. | CApplicationComponent |
cacheFileSuffix | string | cache file suffix. | CFileCache |
cachePath | string | the directory to store cache files. | CFileCache |
directoryLevel | integer | the level of sub-directories to store cache files. | CFileCache |
gCProbability | integer | the probability (parts per million) that garbage collection (GC) should be performed when storing a piece of data in the cache. | CFileCache |
isInitialized | boolean | whether this application component has been initialized (i.e., init() is invoked. | CApplicationComponent |
keyPrefix | string | a string prefixed to every cache key so that it is unique. | CCache |
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 |
flush() | Deletes all values from cache. | CFileCache |
get() | Retrieves a value from cache with a specified key. | CCache |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getGCProbability() | Returns the probability (parts per million) that garbage collection (GC) should be performed when storing a piece of data in the cache. Defaults to 100, meaning 0.01% chance. | CFileCache |
getIsInitialized() | Checks whether this application component has been initialized (i.e., init() is invoked.) | CApplicationComponent |
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. | CFileCache |
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 |
setGCProbability() | Sets the probability (parts per million) that garbage collection (GC) should be performed when storing a piece of data in the cache. Defaults to 100, meaning 0.01% chance. This number should be between 0 and 1000000. A value 0 meaning no GC will be performed at all. | CFileCache |
Method | Description | Defined By |
---|---|---|
addValue() | Stores a value identified by a key into cache if the cache does not contain this key. | CFileCache |
deleteValue() | Deletes a value with the specified key from cache | CFileCache |
gc() | Removes expired cache files. | CFileCache |
generateUniqueKey() | CCache | |
getCacheFile() | Returns the cache file path given the cache key. | CFileCache |
getValue() | Retrieves a value from cache with a specified key. | CFileCache |
getValues() | Retrieves multiple values from cache with the specified keys. | CCache |
setValue() | Stores a value identified by a key in cache. | CFileCache |
cache file suffix. Defaults to '.bin'.
the directory to store cache files. Defaults to null, meaning using 'protected/runtime/cache' as the directory.
the level of sub-directories to store cache files. Defaults to 0, meaning no sub-directories. If the system has huge number of cache files (e.g. 10K+), you may want to set this value to be 1 or 2 so that the file system is not over burdened. The value of this property should not exceed 16 (less than 3 is recommended).
the probability (parts per million) that garbage collection (GC) should be performed when storing a piece of data in the cache. Defaults to 100, meaning 0.01% chance.
protected boolean addValue(string $key, string $value, integer $expire)
| ||
$key | string | the key identifying the value to be cached |
$value | string | the value to be cached |
$expire | 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,$expire)
{
$cacheFile=$this->getCacheFile($key);
if(@filemtime($cacheFile)>time())
return false;
return $this->setValue($key,$value,$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)
{
$cacheFile=$this->getCacheFile($key);
return @unlink($cacheFile);
}
Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
public void flush()
|
public function flush()
{
return $this->gc(false);
}
Deletes all values from cache. Be careful of performing this operation if the cache is shared by multiple applications.
protected void gc(boolean $expiredOnly=true, string $path=NULL)
| ||
$expiredOnly | boolean | whether to removed expired cache files only. If true, all cache files under cachePath will be removed. |
$path | string | the path to clean with. If null, it will be cachePath. |
protected function gc($expiredOnly=true,$path=null)
{
if($path===null)
$path=$this->cachePath;
if(($handle=opendir($path))===false)
return;
while(($file=readdir($handle))!==false)
{
if($file[0]==='.')
continue;
$fullPath=$path.DIRECTORY_SEPARATOR.$file;
if(is_dir($fullPath))
$this->gc($expiredOnly,$fullPath);
else if($expiredOnly && @filemtime($fullPath)<time() || !$expiredOnly)
@unlink($fullPath);
}
closedir($handle);
}
Removes expired cache files.
protected string getCacheFile(string $key)
| ||
$key | string | cache key |
{return} | string | the cache file path |
protected function getCacheFile($key)
{
if($this->directoryLevel>0)
{
$base=$this->cachePath;
for($i=0;$i<$this->directoryLevel;++$i)
{
if(($prefix=substr($key,$i+$i,2))!==false)
$base.=DIRECTORY_SEPARATOR.$prefix;
}
return $base.DIRECTORY_SEPARATOR.$key.$this->cacheFileSuffix;
}
else
return $this->cachePath.DIRECTORY_SEPARATOR.$key.$this->cacheFileSuffix;
}
Returns the cache file path given the cache key.
public integer getGCProbability()
| ||
{return} | integer | the probability (parts per million) that garbage collection (GC) should be performed when storing a piece of data in the cache. Defaults to 100, meaning 0.01% chance. |
public function getGCProbability()
{
return $this->_gcProbability;
}
protected string getValue(string $key)
| ||
$key | string | a unique key identifying the cached value |
{return} | string | the value stored in cache, false if the value is not in the cache or expired. |
protected function getValue($key)
{
$cacheFile=$this->getCacheFile($key);
if(($time=@filemtime($cacheFile))>time())
return file_get_contents($cacheFile);
else if($time>0)
@unlink($cacheFile);
return false;
}
Retrieves a value from cache with a specified key. This is the implementation of the method declared in the parent class.
public void init()
|
public function init()
{
parent::init();
if($this->cachePath===null)
$this->cachePath=Yii::app()->getRuntimePath().DIRECTORY_SEPARATOR.'cache';
if(!is_dir($this->cachePath))
mkdir($this->cachePath,0777,true);
}
Initializes this application component. This method is required by the IApplicationComponent interface. It checks the availability of memcache.
public void setGCProbability(integer $value)
| ||
$value | integer | the probability (parts per million) that garbage collection (GC) should be performed when storing a piece of data in the cache. Defaults to 100, meaning 0.01% chance. This number should be between 0 and 1000000. A value 0 meaning no GC will be performed at all. |
public function setGCProbability($value)
{
$value=(int)$value;
if($value<0)
$value=0;
if($value>1000000)
$value=1000000;
$this->_gcProbability=$value;
}
protected boolean setValue(string $key, string $value, integer $expire)
| ||
$key | string | the key identifying the value to be cached |
$value | string | the value to be cached |
$expire | 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,$expire)
{
if(!$this->_gced && mt_rand(0,1000000)<$this->_gcProbability)
{
$this->gc();
$this->_gced=true;
}
if($expire<=0)
$expire=31536000; // 1 year
$expire+=time();
$cacheFile=$this->getCacheFile($key);
if($this->directoryLevel>0)
@mkdir(dirname($cacheFile),0777,true);
if(@file_put_contents($cacheFile,$value,LOCK_EX)==strlen($value))
{
@chmod($cacheFile,0777);
return @touch($cacheFile,$expire);
}
else
return false;
}
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.