Среда , 14 Ноябрь 2018
Home / Vbulletin 4 / Оптимизация Vbulletin 4
Оптимизация vbulletin
Оптимизация vbulletin

Оптимизация Vbulletin 4

Любой движок, требует определенных действий для оптимизации его для лучшей и быстрой работы. В нашем же случае мы поговорим об оптимизации Vbulletin 4.

Так как движок нашего форума постоянно обновляется, я не буду писать об оптимизации более ранних версий Vbulletin , а начну именно с версии 4.1.12. Хотя возможно, постепенно буду дополнять эту статью и оптимизацией для предыдущих версий, так как не все переходят на более новые.

Автор: Алексей Раков

Здесь я приведу несколько примеров, чтобы сделать Ваш форум Vbulletin быстрее и лучше (начиная с самых простых вещей, переходя к более сложным). Пожалуйста, имейте в виду, что те вещи которые работают у меня, не обязательно будут работать и у вас. Поэтому все изменения вы делаете на свой страх и риск.

Отключение списка пользователей.

Существует простой способ, просто отключить функцию в AdminCP. (Settings -> Options -> User Listing Options)

Это не глобально конечно, и вы можете это пропустить и не делать, просто задайте себе вопрос нужно ли вам это? Так как имея список пользователи могут сортировать его, посмотреть у кого больше сообщений, репутация и так далее. Ваши пользователи пользуются этим? Наверное, нет…, когда вы сами в последний раз пользовались этим списком?

Как по мне, так мне кажется, что данные списки только на пользу спамерам, так как это самый простой способ собрать все именна участников форума Vbulletin 4 для рассылки спама в личных сообщениях.

Кроме этого, запрос который необходим для генерации списка пользователей ужасен для серверов баз данных и может привести к большой загрузке сервера.

Увеличение скорости при обработке списка личных сообщений.

Если вы некогда не импортировали личные сообщения от внешних источников с помощью Impex или других средств, вы можете смело положиться на сортировку по ID для личных сообщений. Сортировка по ID будет делать так, чтобы вашему серверу базы данных не приходилось сбрасывать личные сообщения во временную таблицу для выполнения сортировки (делая запрос намного быстрее).

Чтобы сделать это, нужно прописать небольшой модуль с расположением в private_messagelist_filter и прописать в нем следующее:

if ($sortfield == 'pmtext.dateline') $sortfield = 'pm.pmid';

И все, вы только что сделали private.php на ~ 20% быстрее.


Настраиваем более эффективный поиск последних сообщений от пользователя.

Идем на фтп, ищем файл includes /class_userprofile.php, и заменяем в нем данные следующим образом, ищем:

$getlastposts = $this->registry->db->query_read_slave("
    SELECT thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline
    FROM " . TABLE_PREFIX . "post AS post
    INNER JOIN " . TABLE_PREFIX . "thread AS thread USING (threadid)
    WHERE thread.visible = 1
        AND post.userid  = " . $this->userinfo['userid'] . "
        AND post.visible = 1
    ORDER BY post.dateline DESC
    LIMIT 20
");

и заменяем на это (а конкретнее ORDER BY):

$getlastposts = $this->registry->db->query_read_slave("
    SELECT thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline
    FROM " . TABLE_PREFIX . "post AS post
    INNER JOIN " . TABLE_PREFIX . "thread AS thread USING (threadid)
    WHERE thread.visible = 1
        AND post.userid  = " . $this->userinfo['userid'] . "
        AND post.visible = 1
    ORDER BY post.postid DESC
    LIMIT 20
");

Это делает запрос немного правильнее, чем он существует в данном виде. Таким образом не придется делать сортировку во временную таблицу. Для пользователей у которых более 1000 сообщений, исходный запрос занял бы около 10 секунд, в нашем же случае намного меньше. Это в первую очередь относится к профилю пользователя Vbulletin 4, для отображения последних сообщений.

Проверка индекса тем.

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

Я предлагаю сделать так, чтобы сортировка по умолчанию была в виде даты ( столбец который использует эти данные называется «dateline»), и чтобы это реализовать, выполним запрос:

ALTER TABLE thread ADD INDEX forumid2_dp (forumid, visible, sticky, dateline)

Это запрос применим ко мне конкретно, в вашем случае forumid2_dp должен иметь ваше имя. Используйте на свой страх и риск.

Будьте осторожны при установке дополнений.

Просто потому, что кто-то делает модули и хаки, не означает, что они сделаны именно для вас, работали на больших форумах Vbulletin 4 и не имеют ошибок. Прекрасным примером служат сообщения о массовых взломах, через тот или иной хак.

Конечно, можно предположить, что разработчики не могут всего учесть, и перелопатить все хаки, чтобы они не конфликтовали, но… Убедитесь, что модуль Vbulletin не вызывает больших нагрузок базы данных, убедитесь, что в хак имеет потенциал к защите от SQL инъекций или XSS. К сожалению, приложений и модификаций тысячи, и просто не реально все проверить. Лучше будет если все хаки вы будете писать себе сами, или заказывать у кого-либо. Конкретно под вас и ваши задачи.

Не используйте таблицы в InnoDB.

Тут конечно мне могут плюнуть в лицо, так как эта тема уже обсуждалась миллион раз, но по своему опыту могу сказать, что я работаю 100% на MyISAM таблицах для любого действия. Бывает обрабатываю 1000 запросов в секунду.

Если вы уже начинаете психовать где при запросах у вас все повисает, особенно в новом поиске Vbulletin, смените таблицы InnoDB в MyISAM. MyISAM отвечает быстрее на отдельные запросы, так как не нужно управлять блокировкой отдельных записей. InnoDB работает быстрее в целом, но только потому, что позволяет выполнять запросы одновременно. если ваши запросы и так исполняются быстро под MyISAM, нет необходимости переходить на InnoDB. ИМХО.

Далее, позже, опишу варианты оптимизаций для ранних версий Vbulletin, которые в 4.1.12 уже не актуальны.

Рейтинг статьи

0%

Рейтинг

Оцените данный материал!

User Rating: Be the first one !

About artscripts

Check Also

восстановление vbulletin часть 6

Взломали форум — начинаем восстанавливать (Часть 6)

Настала время заменить все файлы Vbulletin форума новой копией. Для этого скачаем новый zip архив …

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.