Форумы xBB

Форумы xBB > BBCode и прочие языки упрощенной разметки

xBB vs ExBB bb

Автор: BM. Последнее редактирование: 2009-07-25 23:49:46

Всем здрасте.
У меня на сайте стоит обработчик от ExBB движка форума.
Он на регулярках. Поставил xBB - прекрасная вещь по функционалу, но работает в 4 раза медленее (вместо 0.05 сек, 0.2 сек время генерации, только стоит сменить библиотеку) =(( Сколько читаю xBB должен быть в разы быстрее за счет конечных автоматов, но почему то у меня не так, что может быть? ХЕЛП!

7 комментариев

25.07.2009 23:59:28 #
Google Chrome BM
Или быстродействие у вашей библиотеки нормальное, только если хранить обработанный текст в кеше? Тестирую на своём форумце самописном, 20 сообщений на странице. Текстов многотонных не присутствует.
26.07.2009 01:12:57 #
Iceweasel dima
Во-первых, учтите функциональность xBB. Сравнивать быстродействие следует для вещей с одинаково мощной функциональностью. Сколько тегов поддерживает ExBB? Сколько вариантов написания тегов с атрибутами? для xBB это не имеет значения. Для других парсеров - имеет.
 
Во-вторых. Очень часта ошибка, когда для каждого поста создается свой экземпляр класса bbcode. Это МОЖНО делать, но это НЕНУЖНО делать. Так как именно многократная инициализация объекта bbcode приводит к тормозам. Создавайте ОДИН объект и используйте метод parse. Работать будет гораздо быстрее.
26.07.2009 13:44:20 #
Google Chrome BM
Я об этом написал в первом сообщение, конечно функционал не кудышный, просто иного на момент начала написания взять было не от куда.
 
Вот я так и почувствовал что ошибка есть Well
У меня просто заменена базовая функция и в ней вставлена инициализация объекта BBcode и там return $bb -> get_html();
 
Буду экспериментировать, если что напишу.
И спасибо за проект, очень дельная штука, написать тег очень легко.
26.07.2009 14:00:59 #
Google Chrome BM
Text

require_once 'lib/bb/bbcode.lib.php';
$bb = new bbcode;
function ikoncode($text) {
  global $bb;
 
  $bb->parse($text);
  return $bb->get_html();
}
 

При проходе по БД для каждого поста вызывается функция ikoncode. Вот только не понимаю чего не так, строчка global $bb; не пашет, опять туплю =//
26.07.2009 20:16:41 #
Iceweasel dima
Если приведенный вами код находится в скрипте, который включается в другой в теле некой функции, то переменная $bb не принадлежит глобальной области видимости и применять к ней global бессмысленно. Поясню на примере:
 
Есть скрипт a.php:
PHP
<?php
function c()
{
    require './b.php';
}
c();

Есть скрипт b.php:
PHP
<?php
$d = 1;
function e()
{
    global $d;
    var_dump($d);
}
e();

Если вы обратитесь браузером к a.php, то увидете null. Это произошло потому что переменная $d принадлежит области видимости функции c.
 
Вы можете решить свою проблему с помощью суперглобального массива $GLOBALS.
26.07.2009 21:09:16 #
Mozilla Firefox BM
Точняк она вн видимости)))
Спасибо ещё раз!
26.07.2009 23:48:38 #
Iceweasel dima
Пожалуйста Well

Ответить:

Представиться как     Антибот:
   

Просьба не постить мусор. Пользуйтесь кнопкой предварительного просмотра на панели инструментов редактора.

Введите логин: и пароль: (

© 2007-2012, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.