Класс Cache
Cache предоставляет согласованный интерфейс для кэширования в вашем приложении. Он позволяет использовать несколько различных движков кэширования без привязки вашего приложения к конкретной реализации. Также он позволяет изменять хранилище или конфигурацию кэша без влияния на остальную часть приложения.
Настройка движков кэширования
Вы можете настроить движки кэширования в файле Config/cache.php вашего приложения. Пример конфигурации:
Cache::config('shared', [
'className' => 'Cake\Cache\Engine\ApcuEngine',
'prefix' => 'my_app_'
]); Это настраивает движок кэширования APCu с псевдонимом 'shared'. Затем вы можете читать и записывать в этот кэш-псевдоним, используя его в качестве параметра $config в различных методах Cache.
В целом, все операции 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 - Регистр кэша, используемый для создания и использования адаптеров кэша.
Наследованные свойства
Краткое описание методов
- Ищет и создаёт экземпляр требуемого класса движка.
- Записывает данные для ключа в движок кэширования, если он ещё не существует.
- Удаляет все ключи из кэша.
- Удаляет все ключи из кэша со всех конфигураций.
- Удаляет все ключи из кэша, относящиеся к одной группе.
- Уменьшает число по ключу и возвращает уменьшенное значение.
- Удаляет ключ из кэша.
- Удаляет множество ключей из кэша.
- Отключает кэширование.
- Включает кэширование.
- Проверяет, включено ли кэширование.
- Получает движок, привязанный к имени определённой конфигурации.
- Сбор мусора
- Возвращает экземпляр Cache Registry, используемый для создания и использования адаптеров кэша.
- Получает отображение имен групп на конфигурации.
- Увеличивает число по ключу и возвращает увеличенное значение.
- Получает объект SimpleCacheEngine для указанного пула кэша.
- Читает значение по ключу из кэша.
- Читает множество ключей из кэша.
-
Возвращает экземпляр Cache Registry, используемый для создания и использования адаптеров кэша. Также позволяет внедрить новый экземпляр регистра.
- Обеспечивает возможность простого кэширования при чтении.
- Устанавливает экземпляр Cache Registry, используемый для создания и использования адаптеров кэша.
- Записывает данные для ключа в кэш.
- Записывает данные для множества ключей в кэш.
Подробное описание методов
_buildEngine()source protected static
_buildEngine( string $name )
Ищет и создаёт экземпляр требуемого класса движка.
Параметры
- строка
$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'); Параметры
- строка
$key - Идентификатор данных.
- смешанный
$value - Данные для кэширования - всё, кроме ресурса.
- строка
$configопционально 'default' - Опциональное имя конфигурации для записи. По умолчанию 'default'.
Возвращает
booleanTrue, если данные были успешно кэшированы, false в случае ошибки. Или если ключ уже существовал.
clear()source public static
clear( boolean $check = false , string $config = 'default' )
Удаляет все ключи из кэша.
Параметры
- boolean
$checkопционально false если true, проверит срок действия, иначе удалит все. Этот параметр станет бесполезным в версии 4.0, так как он устарел.
- строка
$configопционально '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 deprecated
engine( string $config )
Получить движок, прикрепленный к определенному имени конфигурации.
Если движок кэша и конфигурация отсутствуют, будет сгенерирована ошибка.
Устарело
3.7.0 Используйте Cache::pool() вместо этого. В версии 4.0 все движки кэша будут реализовывать интерфейс PSR16, и этот метод не возвращает объекты, реализующие этот интерфейс.
Параметры
- string
$config - Имя конфигурации, для которой требуется движок.
Возвращает
Cake\Cache\CacheEngineПри отключенном кэшировании возвращается null-движок
gc()source public static deprecated
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 function. Результаты будут затем сохранены в конфигурации кэша по ключу.
Примеры:
Использование замыкания для предоставления данных, предположим, что $this это объект Table:
$results = Cache::remember('all_articles', function () {
return $this->find('all');
}); Параметры
- строка
$key - Ключ кэша для чтения/хранения данных.
- вызываемый
$callable Вызываемый объект, который предоставляет данные в случае, когда ключ кэша пустой. Может быть любого типа вызываемого объекта, поддерживаемого вашим PHP.
- строка
$configнеобязательно 'default' Конфигурация кэша для использования в этой операции. По умолчанию default.
Возвращает
смешанныйЕсли ключ найден: кэшированные данные, false, если данные отсутствуют/просрочены или произошла ошибка. Если ключ не найден: булево значение об успешности записи.
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'
Возвращает
массивмассив булевых значений для каждого предоставленного ключа, указывающих 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);
Параметры
- string|array
$key - Имя конфигурации или массив нескольких конфигураций.
- array
$configoptional null - Массив с именами и данными конфигурации для адаптера.
Исключения
BadMethodCallExceptionПри попытке изменить существующую конфигурацию.
LogicException
При попытке сохранить массив конфигурации с неверной структурой.
setDsnClassMap()source public static
setDsnClassMap( array $map )
Обновляет карту DSN-классов для этого класса.
Параметры
- array
$map - Добавления/изменения в карте классов для применения.
Подробное описание свойств
$_dsnClassMapsource
protected static array
Массив, сопоставляющий схемы 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',
] $_enabledsource
protected static boolean
Флаг для отслеживания включения/выключения кэширования.
true
$_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.8/class-Cake.Cache.Cache.html