Владельцам 3.8.6: не поставили патч - потеряли форум!

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Loading

Go Back   форум vBSupport.org > > >
Register Изображения Меню vBsupport Files Manager Аллея Звёзд Реклама на форуме Search Today's Posts Mark Forums Read
  • Мемберка
  • Администраторам
  • Premoderation
  • For English speaking users
  • Изменения в правах
  • Каталог Фрилансеров
Пароли на скачивание файлов в Member Area меняются автоматически каждый день
Если вам нужно скачать какой то скрипт, за паролем ко мне в ЛС
привет какирам kerk
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Не можете скачать вложение?
Изменения в правах групп пользователей
внимательно читаем эту и эту темы
Короткая версия - тут
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

 
 
Old  
Yoskaldyr
Специалист
Default Расширение стандартной системы кеширования vb 3

Не знаю как кто, но лично мне довольно часто нужно использовать какой либо кеш при написании хаков, чтобы лишний раз не дергать базу. Стандартная система кеширования vb (класс vbDatastore) не совсем подходит, т.к. она оптимизирована под один большой запрос всех данных при инициализации vb (еще до Init хука) и даже если используется любой внешний (xcache, ea, apc, memcached) все равно пишет дубликат в базу (datastore), как следствие этот класс не совсем подходит для частого изменения кеша, например для хаков типа чата (для информации - нет ни одного нормального чата для булки выдерживающего нормальные нагрузки).
Написать что-то жестко заточенное под конкретный кеш для меня не составляет проблем, но это совсем не подходит для публичных хаков, т.к. очень жесткая заточка под конкретную конфигурацию сервера, да и не красиво это.
Может есть у кого или универсальный класс не конфликтующий со стандартным классом булки для однотипной работы с xcache, ea, apc, memcached. И конечно желательно проверенный в работе, т.к. классов существует много, и проверить совместимость и не конфликтность со стандартным классом я могу только для xcache (под хорошей нагрузкой) и ea (без нагрузки).

P.S. Вообще-то уже и сам написал такой класс на базе класса булки и по идее он не должен конфликтовать со стандартным (для xcache точно работает без проблем под нагрузкой), но протестировать для всех кешей не было возможности (особенно критична совместимость со стандартным классом vb memcached-а, т.к. там коннекты к серверу, флаг подсоединенности и т.д. и т.п.).

Добавил файл с функциями расширяющим функционал обращения к варкешу (датастору). Расширение в плане прямого добавления/ прямого извлечения / прямого удаления записей из кеша + работа с TTL.

Работает с eAccelerator, XCache, APC
Не работает с Filecache и Memcached. Первый (Filecache) даже не рассматривал ввиду его скорости, второй не было где нормально протестировать (да и скорость у мемкеша тоже не очень)

Функции:
isenabled_datastore() - проверка что включен поддерживаемый датастор
get_datastore($title, $unserialize_detect = 2) - прямое извлечение записи из датастора (unserialize_detect аналогичен стандартному функционалу vb) возвращает null если запись извлечь не удалось
set_datastore($title, &$data, $ttl=null) - запись данных в датастор
delete_datastore($title) - удалить запись из датастора.

Все производимые операции с датастором никак не трогают датастор в базе, т.е. это не столько использование датастора, а сколько небольшая навеска для прямого использования установленного варкеша.
Attached Files
File Type: zip functions_datastore.zip (821 Bytes, 15 views)

Last edited by Yoskaldyr : 04-03-2010 at 01:54 AM. Reason: Добавил файл с функциями.
 
Old  
Yoskaldyr
Специалист
Default 0

Quote:
Originally Posted by netwind View Post
Кстати, ни один cпособ хранения datastore (xcache,apc,eaccelerator,memcache) не использует технику отображения переменных прямо в память php. Все они сериализируют массивы как строки и копируют их в память php. Память это совсем не экономит.
А я разве говорил кто говорил об экономии памяти? Я говорил о скорости, к тому же объем варкеша в 4Мб в который можно поместить практически любые необходимые данные (если только не надо кешировать vbOptimize-ом целые страницы) это ничто по отношению к потребляемой памяти самим PHP.
Quote:
Originally Posted by netwind View Post
Оно людям и не нужно.
Если не нужно Вам не значит что и другим не нужно.
Конечно можно использовать проверку на наличие метода $vbulletin->datastore->do_fetch и если он есть запускать его (предварительно проверив, что это не мемкеш класс, а если это он, то запустить коннект, потому что после стартовой отработки $vbulletin->datastore->fetch идет дисконнект от сервера мемкеша), после чего те переменные что не были найдены уже писать в $datastore_fetch[] чтобы после хука отработало
$vbulletin->datastore->do_db_fetch
Да так можно, но это через ж...

netwind, И я не понимаю одного, вопрос стоял чисто кодерский - кто какие использует классы для работы с кешами, а Вы мне пытаетесь доказать что это не надо. Но это не ответ на поставленный вопрос. Да и если бы это никому не надо было, то не существовало бы столько вариантов кешей.

P.S. Если Вам просто нечем заняться и нудно на работе, то я это пойму, а если нет, то незачем превращать топик во флудильню.
 
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
Old  
netwind
Гуру
 
netwind's Avatar
Default 0

Quote:
Originally Posted by Yoskaldyr View Post
И я не понимаю одного, вопрос стоял чисто кодерский - кто какие использует классы для работы с кешами, а Вы мне пытаетесь доказать что это не надо.
Разве ты бы поверил в короткий ответ "никто и никакие" ?
 
Old  
Yoskaldyr
Специалист
Default 0

Так почему бы не поверил.
Если бы просто никто не отписался, то или никому не надо или не поняли вопроса.
А так 3 страницы флуда, а результат аналогичный

И здесь получился диалог (разговор 2-х человек), результат которого не может быть объективным мнением всего сообщества - слишком мало мнений и вообще информации - кто и какие системы кеширования использует и т.д. и т.п.
То что почти все хоть какой-то опкодкеш при возможности используют - это уже де факто, особенно любят шаред-хостинги. Вот для поддержки варкеша уже должен быть заточен код веб приложения, поэтому скорее всего он не так часто используется. Но все же было интересно.

Last edited by Yoskaldyr : 09-23-2009 at 01:25 AM.
 
Old  
kerk
k0t
 
kerk's Avatar
Default 0

Quote:
Originally Posted by Yoskaldyr View Post
кто и какие системы кеширования использует
eAccelerator на сервере (если об этом речь)

я уже говорил, тема интересная, но я еще "не в теме" на столько, что бы вмешаться в разговор
пока только читатель
 
Old  
Cybermama
Эксперт
 
Cybermama's Avatar
Default 0

У меня на серваке сейчас Zend Optimizer стоит... в булке vbOptimize
Я вот тоже читаю с интересом, но пока сама до datastore не добиралась
 
Old  
Yoskaldyr
Специалист
Default 0

ладно. как заменю клаву после залития горячим сладким кофе, выложу функу для использовании внутри init_startup с полной (насколько это возможно) отработкой датастора - сначала кеш, потом база если не найдено в кеше. Хотя проще всего модифицировать оригинальный файл булки и добавить свою переменную в specialtemplates
 
Old  
Yoskaldyr
Специалист
Default 0

Только вспомнил что не выложил функи...
Обновил первый пост. Может кому пригодится.

P.S. Если кому надо использовать хранение массивов, то лучше вручную проверять тип выдаваемых get_datastore данных, т.к. не все кешеры умеют работать с массивами, то приходится их сериализировать перед записью, соответственно при извлечении они автоматом десериализируются, но т.к. кому-то может понадобится получить из кеша именно сериализированную строку, то автодесериализация отключаема.
 
Old  
netwind
Гуру
 
netwind's Avatar
Default 0

А сравнить в реальном проекте насколько важно кешировать в чем-либо отличном от кеша mysql, так и не попробовал?
 
Old  
Yoskaldyr
Специалист
Default 0

netwind, Кстати попробовал. Но все-равно достичь приблизительно таких же результатов можно только на выделенном серваке, на вдс-е просто не хватит памяти.
Т.е. хотя бы по расходу памяти использование варкеша всетаки оправдано.
К тому же эти функи для того чтобы не придумывать самому - бери и используй - будут использовать настройки vb. Типичный пример - те же $specialtemplates у vb, их в хуке не определишь, только на init_start добавить извлечение из БД, т.е. получаем какое-то однобокое кеширование.
По скорости я проверял выборку пакетов различной длины в цикле из мускуля (одного и того же значения) и из xcache-а. Разница где-то в 1000 раз (может колебаться от 1000 до десятков тысяч в зависимости от размера данных).
Вот у мемкеша немного другая ниша и он не совсем подходит для использования с булкой.

Хотя потом по производительности все равно идет упор в Eval-ы. Но и тут время самого eval-а (т.е. пхп парсинга) можно свести к минимуму. У меня сейчас все хуки и шаблоны (за редким исключением) из файлов отрабатывают (т.к. скомпилированы опкодкешем, и парсинга в коде уже нет). Вот это реально выполнение PHP сокращает раза в полтора или два (иногда и больше - все зависит от выполняемых хуков и размера шаблонов).

Да и от постоянного обновления lastactivity в user (которое как раз сбрасывает кеш мускуля) можно избавиться, перенеся в крон - всего то пара строчек кода.

P.S. После детального исследования кода, стало понятно что разрабы специально пооставляли для себя лазейки по оптимизации. Чего только стоит выгрузка шаблонов в файлы и потом загрузка их из ФС (стандартный функционал зарытый глубоко в коде)

Yoskaldyr добавил 03.04.2010 в 00:08
netwind, Кстати теперь я полностью согласен, что в 99% случаев никому оптимизация и нафиг не нужна, т.к. почти всегда форум начинает тормозить от хаков а не от самого форума.

Last edited by Yoskaldyr : 04-03-2010 at 01:08 AM. Reason: Добавлено сообщение
 
Old  
netwind
Гуру
 
netwind's Avatar
Default 0

Quote:
Originally Posted by Yoskaldyr View Post
По скорости я проверял выборку пакетов различной длины в цикле из мускуля (одного и того же значения) и из xcache-а. Разница где-то в 1000 раз (может колебаться от 1000 до десятков тысяч в зависимости от размера данных).
да я не то имел ввиду.даже вообще без хаков, получается, что одна пренебрежимо маленькая часть работы по получению данных из кеша в разделяемой памяти в 1000 раз меньше другой маленькой части - хранения данных в mysql. И собственно, зачем этим вообще заморачиваться?

Главное, чтобы кеш был и там хранились данные действительно сложных операций.
 
 

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 04:18 AM.


Powered by vBulletin® Version 3.0.12
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.