Класс Cache
Cache предоставляет согласованный интерфейс к кэшированию в вашем приложении. Он позволяет использовать несколько различных движков кэша без связи вашего приложения с конкретной реализацией. Он также позволяет изменять хранилище или конфигурацию кэша без влияния на остальную часть приложения.
Настройка движков кэша
Вы можете настроить движки кэша в файле вашего приложения Config/cache.php. Пример конфигурации:
Cache::config('shared', [ 'className' => 'Cake\Cache\Engine\ApcEngine', 'prefix' => 'my_app_' ]);
Это настроило движок кэша APC с псевдонимом «shared». Затем вы можете читать и записывать в этот кэш-псевдоним, используя его в качестве параметра $config в различных методах Cache.
В общем, все операции с кэшем поддерживаются всеми движками кэша. Однако, Cache::increment() и Cache::decrement() не поддерживаются кэшированием файлов.
Существует 5 встроенных движков кэширования:
-
FileEngine- Использует простые файлы для хранения содержимого. Низкая производительность, но подходит для хранения больших объектов или таких, которые не чувствительны к вводу-выводу. Хорошо подходит для разработки, так как кэш легко инспектировать и вручную очищать. -
ApcEngine- Использует кэш объектов APC, один из самых быстрых движков кэширования. -
MemcacheEngine- Использует расширение PECL::Memcache и Memcached для хранения. Быстрые чтение/запись, и выигрывает от распределённости memcache. -
XcacheEngine- Использует расширение Xcache, альтернативу APC. -
WincacheEngine- Использует расширение кэша Windows для PHP. Поддерживает wincache 1.1.0 и выше. Этот движок рекомендуется для людей, которые развертывают приложения на Windows с IIS. -
RedisEngine- Использует redis и расширение php-redis для хранения данных кэша.
См. документацию по движкам кэширования для ожидаемых ключей конфигурации.
- Cake\Cache\Cache использует Cake\Core\StaticConfigTrait
См.: config/app.php для настроек конфигурации
Параметр: string $name Имя конфигурации
Параметр: array $config Необязательный ассоциативный массив настроек, передаваемых в движок
Возвращает:
array[engine, settings] при успехе, false при ошибке
Расположено в Cache/Cache.php
Подробное описание методов
_buildEnginesource protected static
_buildEngine( string $name )
Находит и создаёт экземпляр требуемого класса движка.
Параметры
- string
$name - Имя конфигурационного массива, для которого требуется экземпляр движка
Исключения
InvalidArgumentExceptionЕсли движок кэша не может быть создан.
addsource 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
$configнеобязательно 'default' - Необязательное имя конфигурации для записи. По умолчанию 'default'.
Возвращает
booleanTrue, если данные были успешно кэшированы, false — при ошибке или если ключ уже существовал.
clearsource public static
clear( boolean $check false , string $config 'default' )
Удаляет все ключи из кэша.
Параметры
- boolean
$checkнеобязательно false - Если true, проверяет срок действия, иначе удаляет все
- string
$configнеобязательно 'default' - Имя конфигурации для использования. По умолчанию 'default'
Возвращает
booleanTrue, если кэш успешно очищен, false — в противном случае
clearGroupsource public static
clearGroup( string $group , string $config 'default' )
Удаляет все ключи из кэша, принадлежащие одной группе.
Параметры
- string
$group - Имя группы для очистки
- string
$configнеобязательно 'default' - Имя конфигурации для использования. По умолчанию 'default'
Возвращает
booleanTrue, если группа кэша успешно очищена, false — в противном случае
decrementsource public static
decrement( string $key , integer $offset 1 , string $config 'default' )
Уменьшает число по ключу и возвращает уменьшенное значение.
Параметры
- string
$key - Идентификатор данных
- integer
$offsetнеобязательно 1 - На сколько уменьшить
- string
$configнеобязательно 'default' - Необязательное имя конфигурации. По умолчанию 'default'
Возвращает
mixedновое значение или false, если данных нет, они не являются целым числом или произошла ошибка при извлечении
deletesource 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 — если оно не существовало или не удалось удалить
deleteManysource 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Массив значений boolean, true если значение было успешно удалено, false — если оно не существовало или не удалось удалить
disablesource public static
disable( )
Отключает кэширование.
При отключении все операции с кэшем вернут null.
enablesource public static
enable( )
Включает кэширование.
Если кэширование было отключено с помощью Cache::disable(), этот метод отменит это действие.
enginesource public static
engine( string $config )
Извлекает движок, связанный с конкретным именем конфигурации.
Если движок кэша и конфигурация отсутствуют, будет выведено сообщение об ошибке.
Параметры
- string
$config - Имя конфигурации, для которой нужен движок.
Возвращает
Cake\Cache\CacheEngineВ случае отключенного кэширования возвращается null-движок.
gcsource public static
gc( string $config 'default' , integer|null $expires null )
Сбор мусора
Постоянно удаляет все истекшие и удалённые данные
Параметры
- строка
$configнеобязательный 'default' - [необязательно] Имя конфигурации, которую нужно собрать мусор. По умолчанию 'default'
- целое число|null
$expiresнеобязательный null - [необязательно] Отметка времени истечения. По умолчанию NULL
groupConfigssource 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']] Вызов этого метода загрузит все настроенные движки.
Параметры
- строка|null
$groupнеобязательный null - имя группы или null для получения всех сопоставлений групп
Возвращает
arrayотображение группы и всех конфигураций, имеющих ту же группу
Изначает
InvalidArgumentException\InvalidArgumentException
incrementsource public static
increment( string $key , integer $offset 1 , string $config 'default' )
Увеличить число по ключу и вернуть увеличенное значение.
Параметры
- строка
$key - Идентификатор данных
- целое число
$offsetнеобязательный 1 - На сколько увеличить
- строка
$configнеобязательный 'default' - Необязательное имя конфигурации. По умолчанию 'default'
Возвращает
mixedновое значение, или false, если данные не существуют, не являются целым числом, или если произошла ошибка при получении
readsource public static
read( string $key , string $config 'default' )
Чтение ключа из кэша.
Использование:
Чтение из активной конфигурации кэша.
Cache::read('my_data');
Чтение из определенной конфигурации кэша.
Cache::read('my_data', 'long_term');
Параметры
- строка
$key - Идентификатор данных
- строка
$configнеобязательный 'default' - необязательное имя конфигурации для использования. По умолчанию 'default'
Возвращает
mixedКэшированные данные или false, если данных нет, они истекли или произошла ошибка при получении
readManysource 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'
Возвращает
arrayМассив, содержащий для каждого из указанных $keys кэшированные данные или false, если кэшированные данные не могли быть получены.
registrysource public static
registry( Cake\Core\ObjectRegistry $registry null )
Возвращает экземпляр Реестра кэша, используемый для создания и использования адаптеров кэша. Также позволяет вводить новый экземпляр реестра.
Параметры
-
Cake\Core\ObjectRegistry$registryнеобязательный null - Вводимый объект реестра.
Возвращает
Cake\Core\ObjectRegistry\Cake\Core\ObjectRegistry
remembersource 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.
Возвращает
mixedЕсли ключ найден: кэшированные данные, false, если данные отсутствуют/истекли, или ошибка. Если ключ не найден: boolean успешности записи
writesource 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 при ошибке
writeManysource 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'
Возвращает
arrayмассив булевых значений для каждого предоставленного ключа, указывающий true для успеха или false для неудачи
Изначает
RuntimeException\RuntimeException
Методы, используемые из Cake\Core\StaticConfigTrait
configsource public static
config( string|array $key , array $config null )
Этот метод может быть использован для определения конфигураций адаптеров для приложения или чтения существующих конфигураций.
Чтобы изменить конфигурацию адаптера во время выполнения, сначала удалите адаптер, а затем переконфигурируйте его.
Адаптеры не будут построены, пока не будет выполнена первая операция.
Использование
Предполагая, что имя класса Cache следующие сценарии поддерживаются:
Чтение конфигурационных данных обратно:
Cache::config('default');
Настройка движка кэша.
Cache::config('default', $settings);
Ввод построенного адаптера:
Cache::config('default', $instance);
Конфигурирование нескольких адаптеров одновременно:
Cache::config($arrayOfConfig);
Параметры
- строка|массив
$key - Имя конфигурации или массив нескольких конфигураций.
- массив
$configнеобязательный null - Массив имя => конфигурационные данные для адаптера.
Возвращает
array|nullNull при добавлении конфигурации или массив конфигурационных данных при чтении.
Изначает
BadMethodCallExceptionПри попытке изменения существующей конфигурации.
configuredsource public static
configured( )
Возвращает массив, содержащий именованные конфигурации
Возвращает
arrayМассив конфигураций.
dropsource public static
drop( string $config )
Удаляет созданный адаптер.
Если вы хотите изменить существующую конфигурацию, вы должны удалить её, изменить конфигурацию и затем снова добавить её.
Если реализующие объекты поддерживают объект $_registry, то указанная конфигурация также будет выгружена из реестра.
Параметры
- string
$config - Существующая конфигурация, которую вы хотите удалить.
Возвращает
booleanУспешность удаления, возвращает false, если конфигурация не существует.
dsnClassMapsource public static
dsnClassMap( array $map null )
Возвращает или обновляет карту классов DSN для этого класса
Параметры
- array
$mapoptional null - Добавления/изменения в карте классов для применения
Возвращает
arrayмассив
parseDsnsource 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, если они не были указаны иначе.
Обратите внимание, что аргументы строки запроса также анализируются и устанавливаются в качестве значений в возвращаемой конфигурации.
Параметры
- string
$dsn - Строка DSN, которую необходимо преобразовать в массив конфигурации
Возвращает
arrayМассив конфигурации, который будет сохранён после анализа DSN
Выбрасывает
InvalidArgumentExceptionЕсли не передана строка
Резюме свойств
Свойства, используемые из Cake\Core\StaticConfigTrait
© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.Cache.Cache.html