Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | Остання ревізія По сторонах наступні версії | ||
ubillingcache [2018/11/08 03:51] |
ubillingcache [2022/09/24 14:39] 127.0.0.1 зовнішнє редагування |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
+ | ====== Подсистема кэширования ====== | ||
+ | Представляет из себя штатный уровень абстракции для задач требующих кэширования данных на определенное время. Присутствует в составе, | ||
+ | |||
+ | <code ini> | ||
+ | ; Устанавливает тип хранилища системного кэша, возможные значения: | ||
+ | ; files - в файлах, | ||
+ | ; memcached - использует Memcached для кэширования данных в оперативной памяти на основе хеш-таблиц | ||
+ | ; redis - использует Redis как сетевое журналируемое хранилище данных типа " | ||
+ | ; fake - фэйковый кэш - считается, | ||
+ | UBCACHE_STORAGE=files | ||
+ | ; Необязательные опции, устанавливающие если требуется альтернативные параметры memcached и redis | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | ====== Пример использования ====== | ||
+ | Вся работа с классом намотана вокруг метода **getCallback**: | ||
+ | |||
+ | <code php> | ||
+ | $cache = new UbillingCache(); | ||
+ | $cacheTime=60; | ||
+ | $someData = $cache-> | ||
+ | return (web_AnalyticsPaymentsMonthGraph(' | ||
+ | }, $cacheTime); | ||
+ | |||
+ | // | ||
+ | show_window(__(' | ||
+ | </ | ||
+ | Стоит заметить, | ||
+ | А что по скорости? | ||
+ | |||
+ | ====== ООП или использование в своем классе ====== | ||
+ | |||
+ | Для протаскивания свойств вашего объекта внутрь анонимной функции коллбека вам придется использовать небольшой хак. | ||
+ | |||
+ | <code php> | ||
+ | | ||
+ | $result = ''; | ||
+ | $this-> | ||
+ | // а именно создаем $this-> | ||
+ | $obj = $this; // а вот собственно и хак | ||
+ | $result = $this-> | ||
+ | return ($obj-> | ||
+ | }, $this-> | ||
+ | return ($result); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ====== Очистка ====== | ||
+ | Хотя данные из кэша самостоятельно удаляются по прошествии времени $expiration указываемого в секундах, | ||
+ | <code php> | ||
+ | $cache-> | ||
+ | </ | ||
+ | |||
+ | ====== А если без наркомании? | ||
+ | Начиная с релиза 0.8.5 вы можете использовать это все просто на уровне set/get указывая время хранения в кэше. Да, в этом случае нам придется самим решать когда и как засовывать данные в кэш, в случае его устаревания. | ||
+ | |||
+ | Как-то так: | ||
+ | |||
+ | <code php> | ||
+ | $cache=new UbillingCache(); | ||
+ | $cacheTime=60; | ||
+ | $dataToPush=' | ||
+ | |||
+ | |||
+ | // | ||
+ | $dataInCache=$cache-> | ||
+ | if (!empty($dataInCache)) { | ||
+ | //если чего-то получено - показываем это в окошке | ||
+ | show_window(__(' | ||
+ | } else { | ||
+ | // | ||
+ | $cache-> | ||
+ | show_warning(__(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Следует также помнить, | ||
+ | |||
+ | |||
+ | ====== Memcached ====== | ||
+ | Вополне понятно, | ||
+ | |||
+ | / | ||
+ | <file ini> | ||
+ | memcached_enable=" | ||
+ | memcached_flags=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | # / | ||
+ | </ | ||
+ | |||
+ | ====== Redis ====== | ||
+ | Если в вашу сборку пакетов устанавливаемых [[setupubinstaller|UBinstaller]] (в новых бинарниках уже должен быть) не входит Redis, вы можете доустановить его вручную. | ||
+ | |||
+ | Как проверить есть ли он? Да просто методом | ||
+ | |||
+ | < | ||
+ | # cd / | ||
+ | # make && make install | ||
+ | # cd / | ||
+ | # make && make install | ||
+ | # apachectl restart | ||
+ | # / | ||
+ | </ | ||
+ | |||
+ | |||
+ | Включаем в / | ||
+ | <code ini> | ||
+ | redis_enable=" | ||
+ | </ | ||
+ | |||
+ | с последующим запуском | ||
+ | < | ||
+ | # service redis restart | ||
+ | </ | ||
+ | |||
+ | ====== Хочу особенное хранилище ====== | ||
+ | |||
+ | Допустим, | ||
+ | |||
+ | <code php> | ||
+ | $this-> | ||
+ | $this-> | ||
+ | // а в конфиге для всей остальной системы у нас будет вообще memcached и все это только потому, | ||
+ | </ |