====== Пакет CACHE2 ====== Основное назначение пакета CACHE2 - обеспечение механизма кэширования. Кроме того средства пакета позволяют: * [[.cache2:misc#борьба_с_конкурентностью_при_генерировании_кэша|бороться с конкурентностью при генерировании кэша]] * [[.cache2:misc#организация_группы_кэшей_с_помощью_тэгов|организовывать группы кэшей с помощью тэгов]] * [[.cache2:misc#профилирование_запросов_к_кэшу|профилировать запросы к кэшу]] * [[.cache2:macro_cache_tag|реализовать кэширование части macro-шаблона]] ===== Абстракция от хранилища кэша ===== Для абстрагирования от конкретного хранилища кэша используется механизм соединений (семейство классов **%%lmbCache*Connection%%**). В данный момент имеются следующие соединения: ^ Идентификатор драйвера ^ Описание ^ Пример ^ Класс ^ | apc | [[wp>Alternative_PHP_Cache | APC]] | apc: |**%%lmbCacheApcConnection%%** | | memcache | [[wp>Memcached]] | %%memcache://%% | **%%lmbCacheMemcacheConnection%%** | | memory | память php скрипта (работает в рамках одного скрипта) | memory: | **%%lmbCacheMemoryConnection%%** | | db | БД (поддерживается mysql и mysqli) | %%db://?table=%% | **%%lmbCacheDbConnection%%** | | file | файлы: один ключ - один файл | %%file://%% | **%%lmbCacheFileConnection%%** | | session | РНР сессии | session: | **%%lmbCacheSessionConnection%%** | | fake | соединение "пустышка", для отладки | fake: | **%%lmbCacheFakeConnection%%** | ==== Интерфейс соединений ==== В общем случае кэш поддерживает следующие вызовы interface lmbCacheConnection { function getType(); function add ($key, $value, $ttl = false); function set ($key, $value, $ttl = false); function get ($key); function delete($key); function flush(); function increment ($key, $step = 1); function decrement ($key, $step = 1); function lock($key, $ttl = false, $lock_name = false); function unlock($key, $lock_name = false); function safeIncrement($key, $value = 1, $ttl = false) function safeDecrement($key, $value = 1, $ttl = false) ===== Настройка ===== Настройка производится с помощью файла cache.conf.php. :!: В скором времени соединения (в примере это default_cache_dsn и object_cache) скорее всего будут вынесены в отдельную секцию конфигурационного файла. ===== Пример работы ===== Пример работы с кэшом по-умолчанию: lmb_module_require('cache'); $cache = lmbToolkit::instance()->getCache(); $cache->set('key1', 1); var_dump($cache->get('key1'); Теперь воспользуемся именованным кэшом и сымитируем работу счетчика просмотров, в случае, если в кэше у нас хранятся объекты статей $cache = lmbToolkit::instance()->getCache('objects_cache'); $article_key = 'article'.$article_id; if($cache->lock($article_key)) { $article = $cache->get($article_key); $article->views++; $cache->set($article_key, $article); $cache->unlock($article_key); }