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