Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
left_id и right_id - таблица phpbb_forums
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
left_id и right_id - таблица phpbb_forums
Добрый вечер. У меня вопрос относительно ячеек БД - left_id и right_id, в таблице phpbb_forums. Получается так, что когда администратор добавляет к себе на сайт новый форумный раздел, то все остальные имеющиеся значения, в этих ячейках, заного пересчитываются и обновляются с помощью sql запроса. Что в свою очередь не поддается логике. Зачем так делать? К тому же это оказывает влияние на производительность. Зачем надо было только из-за одного форумного раздела, менять значения во всех других форумных разделах? А если этих разделов в базе очень много, то пересчёт доставляет некоторое неудобство. Это еще не учитывая подфорумы. А если и с ними, то алгоритм просчета меняется.. Усложняется в разы.. Я вот думаю, если вы будете делать 4 версию движка, то может всё же исправите данное недоразумение и продумаете алгоритм, сделав его проще?..
- Пчелкин
- phpBB 3.3.0
- Сообщения: 11234
- Стаж: 14 лет 2 месяца
- Откуда: fotovideoforum.ru
- Благодарил (а): 1782 раза
- Поблагодарили: 1340 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Тебе это приснилось. Иды форумов никогда не меняются...с чего ты это взял?stashappy писал(а):Зачем надо было только из-за одного форумного раздела, менять значения во всех других форумных разделах?
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
- Sheer
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 1 месяц
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2752 раза
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Меняются.Пчелкин писал(а):Иды форумов никогда не меняются
Поддается. Это сделано из-за иерархической древовидной структуры форумов.stashappy писал(а):Что в свою очередь не поддается логике
Ну если придумаете проще, получите Нобелевскую премию по математике.stashappy писал(а):всё же исправите данное недоразумение и продумаете алгоритм, сделав его проще?
Добавлено спустя 1 минуту 23 секунды:
Иерархическая модель данных
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
- Пчелкин
- phpBB 3.3.0
- Сообщения: 11234
- Стаж: 14 лет 2 месяца
- Откуда: fotovideoforum.ru
- Благодарил (а): 1782 раза
- Поблагодарили: 1340 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Как меняются? На одном форуме создавал 550 подфорумов...Удалили потом средние...так иды у оставшихся и остались в разброс...с пропусками...и остались и никаким репарсингам не подчиняются...я вот ничего не понял...Sheer писал(а):Меняются.
Да и на других они намертво держатся... в шоке...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
- rxu
- phpBB Guru
- Сообщения: 16313
- Стаж: 17 лет 10 месяцев
- Откуда: Красноярск
- Благодарил (а): 533 раза
- Поблагодарили: 2119 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Иидентификаторы самих форумов не меняются. Значения left_id, right_id, само собой, должны меняться, ибо определяют структуру дерева форумов.
Это нормальный алгоритм, никакой потери в производительности он не дает, так как изменения происходят только при администраторских операциях с форумами, и исправлять там нечего.
Это нормальный алгоритм, никакой потери в производительности он не дает, так как изменения происходят только при администраторских операциях с форумами, и исправлять там нечего.
Re: left_id и right_id - таблица phpbb_forums
Как это можно назвать нормальным алгоритмом, если при удалении или добавлении нового форумного раздела, обновляются ячейки left_id и right_id во всех остальных форумных разделах. А если их будет много! В своей практике, я такой подход вижу впервые. Надо полностью пересматривать алгоритм распределения иерархической структуры форумных разделов. Не гоже, из-за одного созданного или удаленного форумного раздела, переписывать значения всех других форумов.Значения left_id, right_id, само собой, должны меняться, ибо определяют структуру дерева форумов.
Это нормальный алгоритм, никакой потери в производительности он не дает, так как изменения происходят только при администраторских операциях с форумами, и исправлять там нечего.
- Balamut
- Former team member
- Сообщения: 2213
- Стаж: 19 лет
- Откуда: {postrow.POSTER_FROM}
- Поблагодарили: 146 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Предложить другой вариант добавления нового форума с сохранение иерархии.
Добавлено спустя 58 секунд:
Я не требую написать код, предложите именно алгоритм.
Добавлено спустя 58 секунд:
Я не требую написать код, предложите именно алгоритм.
//
// That's all, Folks!
// -------------------------------------------------
// That's all, Folks!
// -------------------------------------------------
- Sheer
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 1 месяц
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2752 раза
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Русским языком можно назвать. stashappy, вы специалист по алгоритмизации? Сомневаюсь, так вот давайте не будем судить о том, о чем не имеем ни малейшего представления.stashappy писал(а):Как это можно назвать нормальным алгоритмом
У вас обширная практика? Тогда покажите алгоритм управления такой-же точно структурой без идентификаторов соседних элементов. Мне попадался, но там требуется две таблицы БД.stashappy писал(а):В своей практике, я такой подход вижу впервые.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
- rxu
- phpBB Guru
- Сообщения: 16313
- Стаж: 17 лет 10 месяцев
- Откуда: Красноярск
- Благодарил (а): 533 раза
- Поблагодарили: 2119 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Sheer
Речь идет о том, что не нужно обновлять левый-правый идентификаторы для всех форумов, а обновлять только для тех, которые реально задействованы в изменениях.
Возможно, в этом есть резон, надо смотреть исходный код.
Речь идет о том, что не нужно обновлять левый-правый идентификаторы для всех форумов, а обновлять только для тех, которые реально задействованы в изменениях.
Возможно, в этом есть резон, надо смотреть исходный код.
- Sheer
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 1 месяц
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2752 раза
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Именно так и происходит. Во всех не меняютсяrxu писал(а):не нужно обновлять левый-правый идентификаторы для всех форумов
Создан форум категория. В ней два форума
Код: Выделить всё
id parent left right
1 0 1 4 Ваша первая категория
2 1 2 3 Ваш первый форум
Код: Выделить всё
id parent left right
1 0 1 4 Ваша первая категория
2 1 2 3 Ваш первый форум
3 0 5 6 Вторая
Код: Выделить всё
id parent left right
1 0 1 4 Ваша первая категория
2 1 2 3 Ваш первый форум
3 0 5 10 Вторая
4 3 6 7 Во второй
5 3 8 9 Еще во второй
Код: Выделить всё
id parent left right
1 0 1 6 Ваша первая категория
2 1 2 3 Ваш первый форум
3 0 7 12 Вторая
4 3 8 9 Во второй
5 3 10 11 Еще во второй
6 1 4 5 В первой
Код: Выделить всё
id parent left right
1 0 1 6 Ваша первая категория
2 1 2 3 Ваш первый форум
3 0 7 12 Вторая
4 3 10 11 Во второй
5 3 8 9 Еще во второй
6 1 4 5 В первой
Вот онrxu писал(а):надо смотреть исходный код.
Код: Выделить всё
if ($forum_data_sql['parent_id'])
{
$sql = 'SELECT left_id, right_id, forum_type
FROM ' . FORUMS_TABLE . '
WHERE forum_id = ' . $forum_data_sql['parent_id'];
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (!$row)
{
trigger_error($user->lang['PARENT_NOT_EXIST'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id), E_USER_WARNING);
}
if ($row['forum_type'] == FORUM_LINK)
{
$errors[] = $user->lang['PARENT_IS_LINK_FORUM'];
return $errors;
}
$sql = 'UPDATE ' . FORUMS_TABLE . '
SET left_id = left_id + 2, right_id = right_id + 2
WHERE left_id > ' . $row['right_id'];
$db->sql_query($sql);
$sql = 'UPDATE ' . FORUMS_TABLE . '
SET right_id = right_id + 2
WHERE ' . $row['left_id'] . ' BETWEEN left_id AND right_id';
$db->sql_query($sql);
$forum_data_sql['left_id'] = $row['right_id'];
$forum_data_sql['right_id'] = $row['right_id'] + 1;
}
else
{
$sql = 'SELECT MAX(right_id) AS right_id
FROM ' . FORUMS_TABLE;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$forum_data_sql['left_id'] = $row['right_id'] + 1;
$forum_data_sql['right_id'] = $row['right_id'] + 2;
}
$sql = 'INSERT INTO ' . FORUMS_TABLE . ' ' . $db->sql_build_array('INSERT', $forum_data_sql);
$db->sql_query($sql);
$forum_data['forum_id'] = $db->sql_nextid();
add_log('admin', 'LOG_FORUM_ADD', $forum_data['forum_name']);
}
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
- Пчелкин
- phpBB 3.3.0
- Сообщения: 11234
- Стаж: 14 лет 2 месяца
- Откуда: fotovideoforum.ru
- Благодарил (а): 1782 раза
- Поблагодарили: 1340 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Sheer Вы гений дипломатии!!!!
Ой...кажется даж я понял всю экзекуцию вопроса...
Тогда топикстартеру вопрос - а у вас на форуме именно темы и сообщения пишут каждую минуту или новые форумы - подфорумы создаются каждые три секунды?
О чем вообще вы печетесь? Раз в месяц ВСЕ это МОЖЕТ БЫТЬ пересчитается и устаканится и все.... Больше ЭТОГО пересчета и не будет...Какие проблемы?
Если же есть просто желание порепетировать созданием категорий, форумов , подфорумов - делайте это на Денвере....Никто не будет ЭТОГО замечать...и делаться будет в миллион раз быстрей...
Ой...кажется даж я понял всю экзекуцию вопроса...
Тогда топикстартеру вопрос - а у вас на форуме именно темы и сообщения пишут каждую минуту или новые форумы - подфорумы создаются каждые три секунды?
О чем вообще вы печетесь? Раз в месяц ВСЕ это МОЖЕТ БЫТЬ пересчитается и устаканится и все.... Больше ЭТОГО пересчета и не будет...Какие проблемы?
Если же есть просто желание порепетировать созданием категорий, форумов , подфорумов - делайте это на Денвере....Никто не будет ЭТОГО замечать...и делаться будет в миллион раз быстрей...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
- nissin
- phpBB 3.0.4
- Сообщения: 2208
- Стаж: 16 лет 3 месяца
- Откуда: Павлодар
- Благодарил (а): 7 раз
- Поблагодарили: 338 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
http://habrahabr.ru/post/46659/
Деревья в базах данных можно хранить тремя основными методами: Adjacency List, Matherialized Path и Nested Sets.
Adjacency List — когда у нас родитель хранится в колонке типа parent_id: ''1''
Matherialized Path — полный путь до элемента хранится в колонке типа path: ''1.2.5''
Nested Sets — пара колонок left_id и right_id, хранящие диапазон всех вложенных элементов, например, корень дерева из 9 элементов будет иметь левое значение ''1'', а правое — ''18''
Какой вариант предлагает использовать ТС?
Деревья в базах данных можно хранить тремя основными методами: Adjacency List, Matherialized Path и Nested Sets.
Adjacency List — когда у нас родитель хранится в колонке типа parent_id: ''1''
Matherialized Path — полный путь до элемента хранится в колонке типа path: ''1.2.5''
Nested Sets — пара колонок left_id и right_id, хранящие диапазон всех вложенных элементов, например, корень дерева из 9 элементов будет иметь левое значение ''1'', а правое — ''18''
Какой вариант предлагает использовать ТС?
Всё повторяется. nurlan.info
- Pazh
- Former team member
- Сообщения: 2317
- Стаж: 14 лет 4 месяца
- Благодарил (а): 43 раза
- Поблагодарили: 506 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
очень простой в понимании метод, НО sql оператор для его использования есть только в ORACLE -nissin писал(а):Adjacency List — когда у нас родитель хранится в колонке типа parent_id: ''1''
Код: Выделить всё
select * from table connect by prior parent_id=id start with id=XXX
stashappy похоже не понял что id форума не меняется - это ключевой параметр, а left_id и right_id - это периферийные параметры, используемые только для построения дерева и нигде как внутри php-кода не светятся
Помощь в ЛС/email только за WM или ЮMoney
Re: left_id и right_id - таблица phpbb_forums
А мы разве обсуждаем id? Прочтите внимательно заголовок темы. Насчет id и так понятно. Он не меняется.stashappy похоже не понял что id форума не меняется
Sheer. Конечно, спасибо, за то что вы расписали и даже в табличном виде, принцип работы. Но это я и так давно сам разобрал.
Почему я что-то должен Вам предлагать? Мне за это награду не дадут, медаль не вручат. Я лишь выразил своё личное мнение, по поводу алгоритма формирования древовидной структуры на движке PhpBB3.Я не требую написать код, предложите именно алгоритм.
А вы у нас экстрасенс или телепат? Как это вы судите о человеке, не имея о нём ни малейшего представления и не зная его в частности. Это глупости какие то. Впрочем, если честно, меня это не заботит...Русским языком можно назвать. stashappy, вы специалист по алгоритмизации? Сомневаюсь, так вот давайте не будем судить о том, о чем не имеем ни малейшего представления.
У меня вот такой вопрос. С помощью скрипта, добавил на форум где-то порядка 2500 форумных разделов. Проверил left_id и right_id - просчиталось всё верно. Но, сам форум стал ужасно тормозить. В какую страницу не захожу, всё тормозит. Решил сначала, что проблема на сервере. Оказалось нет. Получается, 2500 разделов это уже перебор для движка PhpBB3?
- Пчелкин
- phpBB 3.3.0
- Сообщения: 11234
- Стаж: 14 лет 2 месяца
- Откуда: fotovideoforum.ru
- Благодарил (а): 1782 раза
- Поблагодарили: 1340 раз
- Контактная информация:
Re: left_id и right_id - таблица phpbb_forums
Где то как-то видел 1250 - потолок
тем 500 000 - потолок
постов - до 2 500 000 - потолок..где - не помню...
юзеров - 1 000 000 потолок...
тем 500 000 - потолок
постов - до 2 500 000 - потолок..где - не помню...
юзеров - 1 000 000 потолок...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group
Фотовидеофорум ; Форум Кировского района ; Форумы Калдина-Клуба ; Форум Japan Navigation Group