Подсистема кэширования

Присутствует в составе, начиная с Ubilling 0.6.8. Все брутально и прямолинейно как всегда. Реализовано в виде класса UbillingCache и управляется следующими опциями alter.ini:

;Устанавливает режим работы: files, memcached, fake
UBCACHE_STORAGE=files
;Необязательные опции, устанавливающие если требуется альтернативные параметры memcached
;(без них дефолт - localhost:11211)
MEMCACHED_SERVER=localhost
MEMCACHED_PORT=11211

Пример использования

Вся работа с классом намотана вокруг метода getCallback:

$cache = new UbillingCache(); // Создаем объект
$cacheTime=60; // в секундах
$someData = $cache->getCallback('EXAMPLE_KEY', function () {
    return (web_AnalyticsPaymentsMonthGraph('2015'));
}, $cacheTime);
 
//показываем результат
show_window(__('Example data from cache'), $someData);

Стоит заметить, что вы должны самостоятельно позаботиться о сериализации своих данных, если это требуется.

ООП или использование в своем классе

Для протаскивания свойств вашего объекта внутрь анонимной функции коллбека вам придется использовать небольшой хак.

     public function sampleFunction() {
        $result = '';
        $this->initCache(); // тут мы инициализируем общий для объекта экземпляр кеша
                            // а именно создаем $this->cache и $this->timeout
        $obj = $this; // а вот собственно и хак
        $result = $this->cache->getCallback('SAMPLE_FUNCT_CACHE', function() use ($obj) {
            return ($obj->getLargeData()); // к сожалению getLargeData может быть только публичным методом
        }, $this->timeout);
        return ($result);
    }

Очистка

Хотя данные из кеша самостоятельно удаляются по прошествии времени $expiration указываемого в секундах, возможно вам потребуется очистить данные кэша «вот прямо сейчас». Для принудительной очистки конкретного ключа кеша, мы можем использовать публичный метод delete как-то так:

$cache->delete('EXAMPLE_KEY');

Memcached

Вополне понятно, что для UBCACHE_STORAGE=memcached требуется включенный и работающий сам memcached.

/etc/rc.conf

memcached_enable="YES"
memcached_flags="-l 127.0.0.1 -m 64"
 # /usr/local/etc/rc.d/memcached restart
ubillingcache.txt · Последние изменения: 2017/07/14 19:08 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki