Spec-Zone.ru › Yii 1.1

CFileCache

Пакет system.caching
Наследование class CFileCache » CCache » CApplicationComponent » CComponent
Реализует ArrayAccess, ICache, IApplicationComponent
Исходный код framework/caching/CFileCache.php
CFileCache предоставляет механизм кеширования на основе файлов.

Для каждого кешируемого значения 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 в противном случае
Исходный код: framework/caching/CFileCache.php#185 (показать)
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 если удаление произошло без ошибок
Исходный код: framework/caching/CFileCache.php#199 (показать)
protected function deleteValue($key)
{
    
$cacheFile=$this->getCacheFile($key);
    return @
unlink($cacheFile);
}

Удаляет значение с указанным ключом из кэша. Это реализация метода, объявленного в родительском классе.

flushValues() метод (доступно начиная с v1.1.5)

protected boolean flushValues()
{return} boolean успешность операции очистки.
Исходный код: framework/caching/CFileCache.php#117 (показать)
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.
Исходный код: framework/caching/CFileCache.php#232 (показать)
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 путь к файлу кэша
Исходный код: framework/caching/CFileCache.php#210 (показать)
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% вероятность.
Исходный код: framework/caching/CFileCache.php#91 (показать)
public function getGCProbability()
{
    return 
$this->_gcProbability;
}

getValue() метод

protected string|boolean getValue(string $key)
$key string уникальный ключ, идентифицирующий кэшируемое значение
{return} string|boolean значение, сохранённое в кэше, false, если значение отсутствует в кэше или срок действия истек.
Исходный код: framework/caching/CFileCache.php#129 (показать)
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()
Исходный код: framework/caching/CFileCache.php#75 (показать)
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 означает, что сборка мусора не будет выполняться.
Исходный код: framework/caching/CFileCache.php#101 (показать)
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 в противном случае
Исходный код: framework/caching/CFileCache.php#148 (показать)
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API