CFileCache
| Пакет | system.caching |
|---|---|
| Наследование | class CFileCache » CCache » CApplicationComponent » CComponent |
| Реализует | ArrayAccess, ICache, IApplicationComponent |
| Исходный код | framework/caching/CFileCache.php |
Для каждого кешируемого значения CFileCache будет хранить его в отдельном файле в каталоге cachePath, по умолчанию 'protected/runtime/cache'. CFileCache будет автоматически выполнять сборку мусора для удаления истекших файлов кеша.
См. руководство по CCache для общих операций кеширования, поддерживаемых CFileCache.
Свойства публичного доступа
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| behaviors | массив | Поведения, которые должны быть прикреплены к этому компоненту. | CApplicationComponent |
| cacheFileMode | целое число | Разрешения, которые нужно установить для новых файлов кеша. | CFileCache |
| cacheFileSuffix | строка | Суффикс имени файла кеша. | CFileCache |
| cachePath | строка | Каталог для хранения файлов кеша. | CFileCache |
| cachePathMode | целое число | Разрешения, которые нужно установить для каталога хранения файлов кеша. Это значение будет использовано функцией PHP chmod. | CFileCache |
| directoryLevel | целое число | Уровень вложенности подкаталогов для хранения файлов кеша. | CFileCache |
| embedExpiry | булево | Включает ли время истечения кеша в физический файл. | CFileCache |
| gCProbability | целое число | Вероятность (части на миллион), с которой будет выполняться сборка мусора (GC) при хранении данных в кеше. | CFileCache |
| hashKey | булево | Нужно ли хешировать ключ кеша с помощью md5 для нормализации. | CCache |
| isInitialized | булево | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| keyPrefix | строка | Строка-префикс для каждого ключа кеша, делающая его уникальным. | CCache |
| serializer | массив/булево | Функции для сериализации и десериализации кешированных данных. | CCache |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __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 |
| gc() | Удаляет истекшие файлы кэша. | CFileCache |
| get() | Извлекает значение из кэша по указанному ключу. | CCache |
| getEventHandlers() | Возвращает список присоединенных обработчиков событий для события. | CComponent |
| getGCProbability() | Возвращает вероятность (частей на миллион), что выполняется сборка мусора (GC) при сохранении данных в кэше. По умолчанию 100, что означает вероятность 0,01%. | CFileCache |
| getIsInitialized() | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединенные обработчики для указанного события. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует этот компонент приложения. | CFileCache |
| mget() | Извлекает несколько значений из кэша по указанным ключам. | CCache |
| offsetExists() | Возвращает, есть ли запись в кэше с указанным ключом. | CCache |
| offsetGet() | Извлекает значение из кэша по указанному ключу. | CCache |
| offsetSet() | Сохраняет значение, идентифицированное ключом, в кэш. | CCache |
| offsetUnset() | Удаляет значение с указанным ключом из кэша | CCache |
| raiseEvent() | Возбуждает событие. | CComponent |
| set() | Сохраняет значение, идентифицированное ключом, в кэш. | CCache |
| setGCProbability() | Устанавливает вероятность (частей на миллион), что выполняется сборка мусора (GC) при сохранении данных в кэше. По умолчанию 100, что означает вероятность 0,01%. Это число должно быть между 0 и 1000000. Значение 0 означает, что сборка мусора не будет выполняться вообще. | CFileCache |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| addValue() | Сохраняет значение, идентифицированное ключом, в кэш, если в кэше нет этого ключа. | CFileCache |
| deleteValue() | Удаляет значение с указанным ключом из кэша | CFileCache |
| flushValues() | Удаляет все значения из кэша. | CFileCache |
| generateUniqueKey() | CCache | |
| getCacheFile() | Возвращает путь к файлу кэша, заданный ключом кэша. | CFileCache |
| getValue() | Извлекает значение из кэша по указанному ключу. | CFileCache |
| getValues() | Извлекает несколько значений из кэша по указанным ключам. | CCache |
| setValue() | Сохраняет значение, идентифицированное ключом, в кэш. | CFileCache |
Подробное описание свойств
cacheFileMode свойство (доступно с версии v1.1.16)
public integer $cacheFileMode;
разрешения, которые будут установлены для новых файлов кэша. Это значение будет использоваться функцией PHP chmod. По умолчанию 0666, что означает, что файл читабелен и записывается всеми пользователями.
cacheFileSuffix свойство
public string $cacheFileSuffix;
приставка имени файла кэша. По умолчанию '.bin'.
cachePath свойство
public string $cachePath;
директория для хранения файлов кэша. По умолчанию null, что означает использование 'protected/runtime/cache' в качестве директории.
cachePathMode свойство (доступно с версии v1.1.16)
public integer $cachePathMode;
разрешения, которые будут установлены для директории хранения файлов кэша. Это значение будет использоваться функцией PHP chmod. По умолчанию 0777, что означает, что директория может быть читаемой, записываемой и исполняемой всеми пользователями.
directoryLevel свойство
public integer $directoryLevel;
уровень поддиректорий для хранения файлов кэша. По умолчанию 0, что означает отсутствие поддиректорий. Если система имеет большое количество файлов кэша (например, 10К+), вы можете установить это значение в 1 или 2, чтобы не перегрузить файловую систему. Значение этого свойства не должно превышать 16 (рекомендуется менее 3).
embedExpiry свойство (доступно начиная с v1.1.14)
public boolean $embedExpiry;
указывает, следует ли время истечения срока действия записи кэша встраивать в физический файл. По умолчанию значение false, что означает, что для хранения значения срока действия будет использоваться время последнего изменения файла. Значение true означает, что первые десять байтов файла будут зарезервированы и использованы для хранения времени истечения срока действия. На некоторых системах PHP запрещено изменять время последнего изменения файла на будущее, даже с разрешениями 777, поэтому это свойство может быть полезно в таком случае.
gCProbability свойство
public integer getGCProbability()
public void setGCProbability(integer $value)
вероятность (частей на миллион), что сборка мусора (GC) должна быть выполнена при сохранении фрагмента данных в кэше. По умолчанию значение 100, что означает 0,01% вероятность.
Подробное описание методов
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)
{
$cacheFile=$this->getCacheFile($key);
if($this->filemtime($cacheFile)>time())
return false;
return $this->setValue($key,$value,$expire);
}
Сохраняет значение, идентифицируемое ключом, в кэше, если в кэше нет значения с таким ключом. Это реализация метода, объявленного в родительском классе.
deleteValue() метод
protected boolean deleteValue(string $key) | ||
| $key | string | ключ значения, которое нужно удалить |
| {return} | boolean | если удаление произошло без ошибок |
protected function deleteValue($key)
{
$cacheFile=$this->getCacheFile($key);
return @unlink($cacheFile);
}
Удаляет значение с указанным ключом из кэша. Это реализация метода, объявленного в родительском классе.
flushValues() метод (доступно начиная с v1.1.5)
protected boolean flushValues() | ||
| {return} | boolean | успешность операции очистки. |
protected function flushValues()
{
$this->gc(false);
return true;
}
Удаляет все значения из кэша. Это реализация метода, объявленного в родительском классе.
gc() метод
public void gc(boolean $expiredOnly=true, string $path=NULL) | ||
| $expiredOnly | boolean | только файлы кэша, срок действия которых истек, должны быть удалены. Если false, все файлы кэша в папке cachePath будут удалены. |
| $path | string | путь для очистки. Если null, будет использован cachePath. |
public 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);
elseif($expiredOnly && $this->filemtime($fullPath)<time() || !$expiredOnly)
@unlink($fullPath);
}
closedir($handle);
}
Удаляет файлы кэша, срок действия которых истек.
getCacheFile() метод
protected string getCacheFile(string $key) | ||
| $key | string | ключ кэша |
| {return} | string | путь к файлу кэша |
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;
}
Возвращает путь к файлу кэша, заданный ключом кэша.
getGCProbability() метод
public integer getGCProbability() | ||
| {return} | integer | вероятность (частей на миллион), что сборка мусора (GC) должна быть выполнена при сохранении фрагмента данных в кэше. По умолчанию значение 100, что означает 0,01% вероятность. |
public function getGCProbability()
{
return $this->_gcProbability;
}
getValue() метод
protected string|boolean getValue(string $key) | ||
| $key | string | уникальный ключ, идентифицирующий кэшируемое значение |
| {return} | string|boolean | значение, сохранённое в кэше, false, если значение отсутствует в кэше или срок действия истек. |
protected function getValue($key)
{
$cacheFile=$this->getCacheFile($key);
if(($time=$this->filemtime($cacheFile))>time())
return @file_get_contents($cacheFile,false,null,$this->embedExpiry ? 10 : null);
elseif($time>0)
@unlink($cacheFile);
return false;
}
Извлекает значение из кэша по указанному ключу. Это реализация метода, объявленного в родительском классе.
init() метод
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,$this->cachePathMode,true);
chmod($this->cachePath,$this->cachePathMode);
}
}
Инициализирует компонент приложения. Этот метод требуется интерфейсом IApplicationComponent.
setGCProbability() метод
public void setGCProbability(integer $value) | ||
| $value | integer | вероятность (частей на миллион), что сборка мусора (GC) должна быть выполнена при сохранении фрагмента данных в кэше. По умолчанию значение 100, что означает 0,01% вероятность. Это число должно быть в диапазоне от 0 до 1000000. Значение 0 означает, что сборка мусора не будет выполняться. |
public function setGCProbability($value)
{
$value=(int)$value;
if($value<0)
$value=0;
if($value>1000000)
$value=1000000;
$this->_gcProbability=$value;
}
setValue() метод
protected boolean setValue(string $key, string $value, integer $expire) | ||
| $key | string | ключ, определяющий значение, которое нужно поместить в кэш |
| $value | string | значение, которое нужно поместить в кэш |
| $expire | integer | количество секунд, в течение которых значение кэша будет действительным. 0 означает, что значение никогда не истечёт. |
| {return} | boolean | true, если значение успешно сохранено в кэше, false в противном случае |
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)
{
$cacheDir=dirname($cacheFile);
@mkdir($cacheDir,$this->cachePathMode,true);
@chmod($cacheDir,$this->cachePathMode);
}
if(@file_put_contents($cacheFile,$this->embedExpiry ? $expire.$value : $value,LOCK_EX)!==false)
{
@chmod($cacheFile,$this->cacheFileMode);
return $this->embedExpiry ? true : @touch($cacheFile,$expire);
}
else
return false;
}
Сохраняет значение, идентифицируемое ключом, в кэше. Это реализация метода, объявленного в родительском классе.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CFileCache