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