-
Notifications
You must be signed in to change notification settings - Fork 39
Cache
Данный класс лишь враппер для ленивой инициализации адаптеров кеширования, ну и чтобы ничего не ломалось, даже если кеш пытаемся использовать без подключенного кеширования. Так же есть возможность вешать метки на определенные ключи (тегировать)
с версии 7.1.0 изменилась структура конфигурации пакета, фреймворк переехал на использование пакета
cache/cache
Пример настройки для работы с файлами:
// config file cache.php
return array(
"enabled" => true,
"adapter" => "filesystem",
"pools" => array(
/**
* @link https://github.com/php-cache/filesystem-adapter
*/
"filesystem" => function() {
$filesystemAdapter = new \League\Flysystem\Adapter\Local(PATH_DATA . '/cache');
$filesystem = new \League\Flysystem\Filesystem($filesystemAdapter);
return new \Cache\Adapter\Filesystem\FilesystemCachePool($filesystem);
}
)
);
Пример настройки для работы с Predis:
// config file cache.php
return array(
"enabled" => true,
"adapter" => "predis",
"pools" => array(
/**
* @link https://github.com/php-cache/predis-adapter
* @link https://github.com/nrk/predis/wiki/Connection-Parameters
* @link https://github.com/nrk/predis/wiki/Client-Options
*/
"predis" => function() {
$client = new \Predis\Client('tcp:/127.0.0.1:6379');
return new \Cache\Adapter\Predis\PredisCachePool($client);
}
)
);
Примеры конфигурации других адаптеров вы сможете найти на странице http://www.php-cache.com/en/latest/#cache-pool-implementations
Код контроллера:
use Bluz\Proxy\Cache;
if (!$data = Cache::get('key')) {
$data = 1*2*3*4*5; // any calculation
Cache::set('key', $data, /*TTL in seconds*/ 60)
}
Работа с тегами (работает не со всеми адаптерами http://www.php-cache.com/en/latest/#cache-pool-implementations):
use Bluz\Proxy\Cache;
Cache::set('user.profile.42', $data, 3600, ['user', 'profile']);
Cache::clearTags(['user']);
с версии 7.1.0 появилась поддержка PSR-6
Работа с адаптером согласно PSR-6:
use Bluz\Proxy\Cache;
if ($cachePool = Cache::getInstance()) {
$item = $cachePool->getItem('key');
$item->get();
$item->set('value');
$cachePool->save($item);
}
необходимо помнить, что если кеширование будет отключено, то
Cache::getInstance() === false
с версии 0.9.1
В некоторых случаях требуется механизм кеширования отличный от использованного по умолчанию, тогда следует использовать следующий подход (адаптер redis
сконфигурирован, но не задан как дефолтный):
use Bluz\Proxy\Cache;
$adapter = Cache::getInstance()->getAdapter('redis');
// follow PSR-6
$item = $adapter->getItem('user.profile.42');
echo $item->get();
Для отображения статистики APC достаточно найти файл apc.php:
find / -name apc.php* 2>/dev/null
И затем уже его вызвать (настройки доступа описаны внутри скрипта).
Аналогичный скрипт написан и для memcache:
- http://code.google.com/p/phpmemcacheadmin/
- http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/
- http://artur.ejsmont.org/blog/content/first-version-of-memcache-stats-script-based-on-memcachephp
Для работы с Redis рекомендую утилиту Redis Desktop Manager
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View