Класс Cache
Cache предоставляет согласованный интерфейс для кэширования в вашем приложении. Он позволяет использовать несколько различных движков кэширования без привязки приложения к определённой реализации. Также он позволяет менять хранилище или конфигурацию кэша без влияния на остальную часть приложения.
Настройка движков кэширования
Вы можете настроить движки кэширования в файле вашего приложения Config/cache.php. Пример конфигурации:
Cache::config('shared', [
'className' => 'Cake\Cache\Engine\ApcuEngine',
'prefix' => 'my_app_'
]); Это настроит движок кэширования APCu с псевдонимом «shared». Затем вы можете читать и записывать в этот кэш-псевдоним, используя его в качестве параметра $config в различных методах Cache.
В целом, все операции кэширования поддерживаются всеми движками кэширования. Однако Cache::increment() и Cache::decrement() не поддерживаются кэшированием файлов.
Существует 7 встроенных движков кэширования:
-
ApcuEngine— использует кэш-объект APCu, один из самых быстрых движков кэширования. -
ArrayEngine— использует только оперативную память для хранения всех данных, фактически не является постоянным движком. Может быть полезен в тестовой или CLI-среде. -
FileEngine— использует простые файлы для хранения содержимого. Низкая производительность, но подходит для хранения больших объектов или вещей, не чувствительных к вводу-выводу. Хорошо подходит для разработки, так как его легко просмотреть и вручную очистить. -
MemcacheEngine— использует расширение PECL::Memcache и Memcached для хранения. Быстрый чтение/запись и выгоды от распределённого memcache. -
RedisEngine— использует redis и расширение php-redis для хранения данных кэша. -
WincacheEngine— использует расширение Windows Cache для PHP. Поддерживает wincache 1.1.0 и выше. Этот движок рекомендуется для людей, разрабатывающих на Windows с IIS. -
XcacheEngine— использует расширение Xcache, альтернативу APCu.
См. документацию по движкам кэширования для ожидаемых ключей конфигурации.
- Cake\Cache\Cache использует Cake\Core\StaticConfigTrait
См.: config/app.php для настроек конфигурации
Расположение: Cache/Cache.php
Краткое описание свойств
-
arrayМассив, сопоставляющий схемы URL с полными именами классов движков кэширования.
- Флаг для отслеживания включения/выключения кэширования.
boolean - Сопоставление группы с конфигурацией
array - Реестр кэша, используемый для создания и использования адаптеров кэша.
Унаследованные свойства
Краткое описание методов
- Находит и создаёт экземпляр необходимого класса движка.
- Записывает данные для ключа в движок кэширования, если он ещё не существует.
- Удаляет все ключи из кэша.
- Удаляет все ключи из кэша из всех конфигураций.
- Удаляет все ключи из кэша, принадлежащие к одной группе.
- Уменьшает число по ключу и возвращает уменьшенное значение.
- Удаляет ключ из кэша.
- Удаляет множество ключей из кэша.
- Отключает кэширование.
- Включает кэширование.
- Проверяет включено ли кэширование.
- Получает движок, привязанный к определённому имени конфигурации.
- Сбор мусора
- Возвращает экземпляр реестра кэша, используемый для создания и использования адаптеров кэша.
- Получает сопоставление имён групп с конфигурациями.
- Увеличивает число по ключу и возвращает увеличенное значение.
- Получает объект SimpleCacheEngine для указанного пула кэша.
- Считывает ключ из кэша.
- Считывает несколько ключей из кэша.
- Возвращает экземпляр реестра кэша, используемый для создания и использования адаптеров кэша. Также позволяет вводить новый экземпляр реестра.
- Обеспечивает возможность простого кэширования с чтением.
- Устанавливает экземпляр реестра кэша, используемый для создания и использования адаптеров кэша.
- Записывает данные для ключа в кэш.
- Записывает данные для многих ключей в кэш.
Подробное описание методов
_buildEngine()source protected static
_buildEngine( string $name )
Находит и создаёт экземпляр необходимого класса движка.
Параметры
- string
$name - Имя массива конфигурации, для которого нужно создать экземпляр движка
Исключения
InvalidArgumentExceptionПри невозможности создать движок кэширования.
add()source public static
add( string $key , mixed $value , string $config = 'default' )
Записывает данные для ключа в движок кэширования, если он ещё не существует.
Использование:
Запись в активную конфигурацию кэша:
Cache::add('cached_data', $data); Запись в определённую конфигурацию кэша:
Cache::add('cached_data', $data, 'long_term'); Параметры
- string
$key - Идентификатор данных.
- mixed
$value - Данные для кэширования — всё кроме ресурса.
- string
$configoptional 'default' - Необязательное имя конфигурации для записи. По умолчанию 'default'.
Возвращает
booleanTrue, если данные успешно кэшированы, false при ошибке. Или если ключ уже существовал.
clear()source public static
clear( boolean $check = false , string $config = 'default' )
Удаляет все ключи из кэша.
Параметры
- boolean
$checkoptional false Если true, проверит срок действия, иначе удалит все. Этот параметр станет бесполезным в версии 4.0, так как устарел.
- string
$configoptional 'default' - Имя конфигурации для использования. По умолчанию 'default'
Возвращает
booleanTrue, если кэш был успешно очищен, иначе false
clearAll()source public static
clearAll( boolean $check = false )
Удалить все ключи из кэша всех конфигураций.
Параметры
- boolean
$checkнеобязательный false если true, проверит срок действия, в противном случае удалит все. Этот параметр станет бесполезным в версии 4.0, так как он устарел.
Возвращает
arrayКод состояния. Для каждой конфигурации он сообщает о статусе операции
clearGroup()source public static
clearGroup( string $group , string $config = 'default' )
Удалить все ключи из кэша, относящиеся к той же группе.
Параметры
- string
$group - имя группы, подлежащей очистке
- string
$configнеобязательный 'default' - имя конфигурации для использования. По умолчанию 'default'
Возвращает
booleanTrue, если группа кэша была успешно очищена, false в противном случае
decrement()source public static
decrement( string $key , integer $offset = 1 , string $config = 'default' )
Уменьшить число по ключу и вернуть уменьшенное значение.
Параметры
- string
$key - Идентификатор данных
- integer
$offsetнеобязательный 1 - На сколько уменьшить
- string
$configнеобязательный 'default' - Необязательное имя конфигурации. По умолчанию 'default'
Возвращает
mixedновое значение или false, если данные не существуют, не являются целым числом, или если произошла ошибка при их извлечении
delete()source public static
delete( string $key , string $config = 'default' )
Удалить ключ из кэша.
Использование:
Удаление из активной конфигурации кэша.
Cache::delete('my_data'); Удаление из конкретной конфигурации кэша.
Cache::delete('my_data', 'long_term'); Параметры
- string
$key - Идентификатор данных
- string
$configнеобязательный 'default' - имя конфигурации для использования. По умолчанию 'default'
Возвращает
booleanTrue, если значение было успешно удалено, false, если оно не существовало или не могло быть удалено
deleteMany()source public static
deleteMany( array $keys , string $config = 'default' )
Удалить несколько ключей из кэша.
Использование:
Удаление нескольких ключей из активной конфигурации кэша.
Cache::deleteMany(['my_data_1', 'my_data_2']);
Удаление из конкретной конфигурации кэша.
Cache::deleteMany(['my_data_1', 'my_data_2], 'long_term');
Параметры
- array
$keys - Массив ключей кэша, которые необходимо удалить
- string
$configнеобязательный 'default' - имя конфигурации для использования. По умолчанию 'default'
Возвращает
arrayмассив логических значений, равных true, если значение было успешно удалено, и false, если оно не существовало или не могло быть удалено.
disable()source public static
disable( )
Отключить кэширование.
При отключении все операции кэширования вернут null.
enable()source public static
enable( )
Включить кэширование повторно.
Если кэширование было отключено с помощью Cache::disable(), этот метод вернет этот эффект.
engine()source public static устаревший
engine( string $config )
Получить движок, присоединенный к определенному имени конфигурации.
Если движок кэша и конфигурация отсутствуют, будет вызвана ошибка.
Устаревший
3.7.0 Используйте Cache::pool() вместо этого. В версии 4.0 все движки кэша будут реализовывать интерфейс PSR16, и этот метод не возвращает объекты, реализующие этот интерфейс.
Параметры
- string
$config - Имя конфигурации, для которой вам нужен движок.
Возвращает
Cake\Cache\CacheEngineПри отключенном кэшировании будет возвращен null-движок.
gc()source public static устаревший
gc( string $config = 'default' , integer|null $expires = null )
Сбор мусора
Постоянно удаляет все просроченные и удаленные данные
Устаревший
3.7.0 Будет удалено в 4.0Параметры
- string
$configнеобязательный 'default' - [необязательно] Имя конфигурации, для которой необходимо выполнить сбор мусора. По умолчанию 'default'
- integer|null
$expiresнеобязательный null - [необязательно] Метка времени истечения срока действия. По умолчанию NULL
getRegistry()source public static
getRegistry( )
Возвращает экземпляр реестра кэша, используемый для создания и использования адаптеров кэша.
Возвращает
Cake\Core\ObjectRegistrygroupConfigs()source public static
groupConfigs( string|null $group = null )
Получить отображение имен групп к конфигурациям.
Cache::config('daily', ['duration' => '1 day', 'groups' => ['posts']]);
Cache::config('weekly', ['duration' => '1 week', 'groups' => ['posts', 'archive']]);
$configs = Cache::groupConfigs('posts'); $configs будут равны ['posts' => ['daily', 'weekly']] Вызов этого метода загрузит все настроенные движки.
Параметры
- string|null
$groupнеобязательный null - имя группы или null для получения всех соответствий групп
Возвращает
arrayотображение групп и всех конфигураций, имеющих одинаковую группу
Выбрасывает
InvalidArgumentExceptionincrement()source public static
increment( string $key , integer $offset = 1 , string $config = 'default' )
Увеличить число по ключу и вернуть увеличенное значение.
Параметры
- string
$key - Идентификатор данных
- integer
$offsetнеобязательный 1 - На сколько увеличить
- string
$configнеобязательный 'default' - Необязательное имя конфигурации. По умолчанию 'default'
Возвращает
mixedновое значение или false, если данные не существуют, не являются целым числом, или если произошла ошибка при их извлечении.
pool()source public static
pool( string $config )
Получить объект SimpleCacheEngine для указанного пула кэша.
Параметры
- string
$config - Имя настроенного кэша.
Возвращает
Cake\Cache\SimpleCacheEngineread()source public static
read( string $key , string $config = 'default' )
Прочитать ключ из кэша.
Использование:
Чтение из активной конфигурации кэша.
Cache::read('my_data'); Чтение из конкретной конфигурации кэша.
Cache::read('my_data', 'long_term'); Параметры
- string
$key - Идентификатор данных
- string
$configнеобязательный 'default' - необязательное имя конфигурации для использования. По умолчанию 'default'
Возвращает
mixedДанные из кэша или false, если данных нет, они просрочены или произошла ошибка при их извлечении
readMany()source public static
readMany( array $keys , string $config = 'default' )
Считывание нескольких ключей из кэша.
Использование:
Чтение нескольких ключей из активной конфигурации кэша.
Cache::readMany(['my_data_1', 'my_data_2]);
Чтение из определённой конфигурации кэша.
Cache::readMany(['my_data_1', 'my_data_2], 'long_term');
Параметры
- массив
$keys - массив ключей для извлечения из кэша
- строка
$configнеобязательно 'default' - необязательное имя конфигурации для использования. По умолчанию 'default'
Возвращает
массивМассив, содержащий данные из кэша для каждого из заданных ключей $keys, или false, если данные не были извлечены из кэша.
registry()source public static deprecated
registry( Cake\Core\ObjectRegistry $registry = null )
Возвращает экземпляр Реестра кэша, используемый для создания и использования кэш-адаптеров. Также позволяет вводить новый экземпляр реестра.
Устарело
Устарело начиная с 3.5. Используйте getRegistry() и setRegistry() вместо этого.Параметры
-
Cake\Core\ObjectRegistry$registryнеобязательно null - Экземпляр реестра для ввода.
Возвращает
Cake\Core\ObjectRegistryremember()source public static
remember( string $key , callable $callable , string $config = 'default' )
Обеспечивает возможность лёгкого выполнения кэширования при чтении.
При вызове, если $key не задан в $config, вызывается функция $callable. Результаты затем сохраняются в конфигурации кэша с ключом.
Примеры:
Использование замыкания для предоставления данных, предположим, что $this — это объект Table:
$results = Cache::remember('all_articles', function () {
return $this->find('all');
}); Параметры
- строка
$key - Ключ кэша для чтения/хранения данных.
- замыкание
$callable Замыкание, которое предоставляет данные в случае, если ключ кэша пуст. Может быть любым типом вызываемого объекта, поддерживаемым PHP.
- строка
$configнеобязательно 'default' Конфигурация кэша для использования в этой операции. По умолчанию — default.
Возвращает
смешанный типЕсли ключ найден: кэшированные данные, false, если данные отсутствуют/просрочены или произошла ошибка. Если ключ не найден: boolean, указывающий на успех записи.
setRegistry()source public static
setRegistry( Cake\Core\ObjectRegistry $registry )
Устанавливает экземпляр Реестра кэша, используемый для создания и использования адаптеров кэша.
Также позволяет вводить новый экземпляр реестра.
Параметры
-
Cake\Core\ObjectRegistry$registry - Экземпляр реестра для ввода.
write()source public static
write( string $key , mixed $value , string $config = 'default' )
Запись данных для ключа в кэш.
Использование:
Запись в активную конфигурацию кэша:
Cache::write('cached_data', $data); Запись в определённую конфигурацию кэша:
Cache::write('cached_data', $data, 'long_term'); Параметры
- строка
$key - Идентификатор данных
- смешанный тип
$value - Данные для кэширования — всё, кроме ресурса
- строка
$configнеобязательно 'default' - Необязательное имя конфигурации для записи. По умолчанию 'default'
Возвращает
booleanTrue, если данные были успешно кэшированы, false при ошибке
writeMany()source public static
writeMany( array $data , string $config = 'default' )
Запись данных для многих ключей в кэш.
Использование:
Запись в активную конфигурацию кэша:
Cache::writeMany(['cached_data_1' => 'data 1', 'cached_data_2' => 'data 2']);
Запись в определённую конфигурацию кэша:
Cache::writeMany(['cached_data_1' => 'data 1', 'cached_data_2' => 'data 2'], 'long_term');
Параметры
- массив
$data - Массив данных для хранения в кэше
- строка
$configнеобязательно 'default' - Необязательное имя конфигурации для записи. По умолчанию 'default'
Возвращает
массивмассив значений boolean для каждого ключа, указывающих на успех (true) или ошибку (false)
Выбрасывает
RuntimeExceptionМетоды, используемые из Cake\Core\StaticConfigTrait
config()source public static deprecated
config( string|array $key , array|null $config = null )
Этот метод может быть использован для определения адаптеров конфигурации для приложения или чтения существующей конфигурации.
Чтобы изменить конфигурацию адаптера во время выполнения, сначала удалите адаптер, а затем переконфигурируйте его.
Адаптеры не будут созданы до тех пор, пока не будет выполнена первая операция.
Использование
Предполагая, что имя класса — Cache , поддерживаются следующие сценарии:
Чтение данных конфигурации обратно:
Cache::config('default'); Настройка движка кэша.
Cache::config('default', $settings); Ввод построенного адаптера:
Cache::config('default', $instance); Настройка нескольких адаптеров одновременно:
Cache::config($arrayOfConfig);
Устарело
3.4.0 Используйте setConfig()/getConfig() вместо этого.Параметры
- строка|массив
$key - Имя конфигурации или массив нескольких конфигураций.
- массив|null
$configнеобязательно null - Массив имени => данных конфигурации для адаптера.
Возвращает
массив|nullNull при добавлении конфигурации или массив данных конфигурации при чтении.
Выбрасывает
BadMethodCallExceptionПри попытке изменить существующую конфигурацию.
configured()source public static
configured( )
Возвращает массив, содержащий именованные конфигурации
Возвращает
массив строкМассив конфигураций.
drop()source public static
drop( string $config )
Удаляет построенный адаптер.
Если вы хотите изменить существующую конфигурацию, вы должны удалить её, изменить конфигурацию, а затем добавить её заново.
Если реализующие объекты поддерживают объект $_registry , именованная конфигурация также будет загружена из реестра.
Параметры
- строка
$config - Существующая конфигурация, которую вы хотите удалить.
Возвращает
booleanУспешность удаления, возвращает false, если конфигурация не существует.
dsnClassMap()source public static deprecated
dsnClassMap( array $map = null )
Возвращает или обновляет карту классов DSN для данного класса.
Устарело
3.4.0 Используйте setDsnClassMap()/getDsnClassMap() вместо этого.Параметры
- массив
$mapнеобязательно null - Добавления/изменения в карту классов для применения.
Возвращает
массивgetConfig()source public static
getConfig( string $key )
Читает существующую конфигурацию.
Параметры
- строка
$key - Имя конфигурации.
Возвращает
массив|nullМассив данных конфигурации.
getDsnClassMap()source public static
getDsnClassMap( )
Возвращает карту классов DSN для данного класса.
Возвращает
массивparseDsn()source public static
parseDsn( string $dsn )
Разбирает DSN в корректную конфигурацию подключения
Этот метод позволяет задать DSN, используя формат, похожий на тот, что используется в PEAR::DB. Пример использования:
$dsn = 'mysql://user:pass@localhost/database?'; $config = ConnectionManager::parseDsn($dsn); $dsn = 'Cake\Log\Engine\FileLog://?types=notice,info,debug&file=debug&path=LOGS'; $config = Log::parseDsn($dsn); $dsn = 'smtp://user:secret@localhost:25?timeout=30&client=null&tls=null'; $config = Email::parseDsn($dsn); $dsn = 'file:///?className=\My\Cache\Engine\FileEngine'; $config = Cache::parseDsn($dsn); $dsn = 'File://?prefix=myapp_cake_core_&serialize=true&duration=+2 minutes&path=/tmp/persistent/'; $config = Cache::parseDsn($dsn);
Для всех классов значение scheme устанавливается как значение className, если не указано иное.
Обратите внимание, что аргументы запроса также анализируются и устанавливаются как значения в возвращаемой конфигурации.
Параметры
- строка
$dsn - Строка DSN для преобразования в массив конфигурации
Возвращает
массивМассив конфигурации для хранения после разбора DSN
Выбрасывает
InvalidArgumentExceptionЕсли не передана строка или передана некорректная строка
setConfig()source public static
setConfig( string|array $key , array $config = null )
Этот метод может использоваться для определения адаптеров конфигурации для приложения.
Чтобы изменить конфигурацию адаптера во время выполнения, сначала удалите адаптер, а затем переконфигурируйте его.
Адаптеры не будут построены до тех пор, пока не будет выполнено первое действие.
Использование
Предполагая, что имя класса Cache, поддерживаются следующие сценарии:
Настройка движка кэширования.
Cache::setConfig('default', $settings); Вставка построенного адаптера в:
Cache::setConfig('default', $instance); Настройка нескольких адаптеров одновременно:
Cache::setConfig($arrayOfConfig);
Параметры
- строка|массив
$key - Имя конфигурации или массив нескольких конфигураций.
- массив
$configнеобязательно null - Массив данных конфигурации адаптера с именем в качестве ключа.
Выбрасывает
BadMethodCallExceptionПри попытке изменить существующую конфигурацию.
LogicException
При попытке сохранить некорректный массив конфигурации.
setDsnClassMap()source public static
setDsnClassMap( array $map )
Обновляет карту DSN для этого класса.
Параметры
- массив
$map - Добавления/изменения в карту класса для применения.
Подробное описание свойств
$_dsnClassMapsource
protected static массив
Массив, сопоставляющий схемы URL с полными именами классов движков кеширования.
[
'array' => 'Cake\Cache\Engine\ArrayEngine',
'apc' => 'Cake\Cache\Engine\ApcuEngine', // @deprecated Since 3.6. Use apcu instead.
'apcu' => 'Cake\Cache\Engine\ApcuEngine',
'file' => 'Cake\Cache\Engine\FileEngine',
'memcached' => 'Cake\Cache\Engine\MemcachedEngine',
'null' => 'Cake\Cache\Engine\NullEngine',
'redis' => 'Cake\Cache\Engine\RedisEngine',
'wincache' => 'Cake\Cache\Engine\WincacheEngine',
'xcache' => 'Cake\Cache\Engine\XcacheEngine',
] $_registrysource
protected static Cake\Core\ObjectRegistry
Регистр кэша, используемый для создания и использования адаптеров кэша.
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.7/class-Cake.Cache.Cache.html