VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Набор классов для кэширования пользовательских данных.
================
Автор:YURSHAT Язык продукта: Английский + русский языковый файл (UTF-8 и Windows-1251)
================
Что делает хак ?
Сам по себе не делает ничего Хак предназначен для разработчиков продуктов, то есть дает возможность использовать временный/постоянный кэш в ваших продуктах.
Доступны следующие кэшеры:
eAccelerator
Memcache
APC
XCache
Filecache
Автоматически будет использован тот класс, который указан в config.php для Datastore. Если не указан кэшер для Datastore, будет использован Filecache.
================
Установка:
Залить содержимое папки upload в корень форума
Установить CHMOD 0777 на папку "includes/datastore/filecache"
Импортировать продукт product-vbcache.xml
Локализация:
Панель администратора => Языки и фразы => Управление языками => Импорт языка из XML файла
Нажимаем "Обзор" и выбираем файл "vbcache-language_ru_%encoding%"
Выбираем из списка "Russian (RU)" в опции "Перезаписать язык" и устанавливаем в "Да" опцию "Игнорировать версию языка" после чего нажимаем "Импорт"
================
Использовать кэш очень легко. Классы имеют три метода:
function read($title)
чтение кэша, где
@ $title - ключ кэша
function write($title, $data, $ttl)
установка кэша, где
@ $title - ключ кэша
@ $data - данные, которые требуется закэшировать
@ $ttl - время хранения кэша (секунды)
function delete($title)
удаление кэша, где
@ $title - ключ кэша
================
Как использовать?
Кэш доступен как метод объекта $vbulletin - $vbulletin->cache и как глобальная переменная - $vbcache
Пример использования:
PHP Code:
if (!$myinfo = $vbulletin->cache->read('myinfo'))
{
$query = $vbulletin->db->query_first("
SELECT postusername, title
FROM " . TABLE_PREFIX . "thread
WHERE threadid = 1
");
В данном примере мы закешировали на 60 мин заголовок и имя автора темы с ID 1.
То есть, если кэша с ключем myinfo не существует, выполняется запрос к БД для получения необходимых данных и выполняется установка кеша. После этого данные читаются из кэша в переменную $myinfo.
Так в этом и основная суть Плюс данный хак не делает запросов в БД при установке кэша.
Данные классы я писал для двух вещей, для которых вобловский Datastore не подходит:
1. Хак сайдбара, чтобы юзверь мог задать время кэширования блоков.
2. Аннонсер трекера. В скрипте аннонсера не инклудится вобловский global.php. Соответсвенно, нет возможности использовать вобловский Datastore.
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,711
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 7723
0
Quote:
Originally Posted by YURSHAT
Соответсвенно, нет возможности использовать вобловский Datastore.
одним легким запросом достается любая инфа из датастор
многие кодеры с "орга" до сих пор не подозревают, что в "спешлтемплейтс" (в своем скрипте) или прицепив на хук воблы пару строк своего кода, можно запросить свои данные из кэша и использовать их, вместо этого, выполняют запросы в датастор
kerk, я прекрасно знаю как работать с Datastore и что такое такое $specialtemplates
У четвёрки, сделали свой кэш с возможностью задавать временное кэширование. Этот кэш они и использовали в сайдбаре. Я, да бы не перекраивать всю структуру, решил задачу по своему.
Да и зачем использовать БД для кэширования, если для этой задачи есть нормальные кэшеры (Memcached, XCache и .т.д.) выполняющие задачи без запросов к БД? Если на сервере не доступны нормальные кэшеры - предусмотрен файловый кэш, которому также не требуются запросы при чтении\записи.
В аннонсере трекера не инклудятся файлы воблы вообще. Он по сути автономный. Потому там не канают не хуки, не экшнтемплейтсы. Там любой запрос кретичен. Потому инклудится скриптик vBCache и происходит работа с кэшем.
Кэш на определённое время в Datastore не предусмотрен. Да, можно добавлять столбец и в него писать время, потом кроном проверять и удалять, если кэш не актуален. Но всё равно придется писать хак. Добавлять это в каждый хак тоже не есть гуд, ибо не знаем, а вдруг какой-то из установленных хаков уже добавил такой столбец и крон-задачу?.
Да, я в принципе делал его для своих конкретных нужд. Но, он вполне подойдёт тем хакам, где нужно точно задавать время кэширования.
А использовать или нет - это дело каждого.
В подавляющем большинстве случаев вобловского Datastore вполне достаточно. Но, бывают и исключения
Ещё бы поддержку Redis добавить, через hiredis и напрямую.
Да добавить не проблема, но есть несколько "Но":
1. Нужно куда-то выводить конфиг для Redis;
2. Менять способ инициализации кэшера, так как сейчас всй пляшет от используемого кэшера для vB_Datastore.
Сделать отдельный config_vbcache.php и задавать в нём настройки для Redis и там же указывать кэшер для vBCache? Ну, можно и так.
В принципе, можно и сваять на досуге, если это актуально.