Ru-Board.club
← Вернуться в раздел «Другие форумы»

» Новый форум своими силами

Автор: ivank
Дата сообщения: 07.08.2002 16:24
Farkhad
и что из приведённой цитаты? Я просто сказал что структуру базисных классов должна разрабатывать core-development team, я туда из-за нехватки времени так и так не попаду. Какое это имеет отношение к дискусии (на тему того, что ничего не получится).
Автор: alexei
Дата сообщения: 07.08.2002 17:19
ivank
zapimir
Ну как там с таблицами? Я тут тоже начал кое-что писать и мне хотелось бы посмотреть вы таблицы спроектировали
Автор: ivank
Дата сообщения: 07.08.2002 17:33
alexei
У zapimir'а отпуск, и всё дело стоит И вообще, кто сказал, что я этим занимаюсь? Я сказал, что буду подмогать по мере сил...

В принципе у меня есть работающий код + соответствующая таблица, но мне структура таблиц кажется неудачной (медленной), так что вся надежда на zapimir'а с его опытом.
Автор: vp7
Дата сообщения: 08.08.2002 10:44
ivank, покажи свою структуру таблиц, чтоли? Оч интересно было бы посмотреть (а может и сравнить со своими результатами, когда они будут доведены до ума)
Автор: zapimir
Дата сообщения: 08.08.2002 12:29
Да, разрослась тема, пока меня небыло.
Вот структура основных таблиц. Остальные таблицы, в принципе, будут создаваться по мере надобности. Возможно в эти таблицы также будут добавлены новые поля если понадобится... (Т.к. например, я изначально не планировал делать вложенных форумов)

Код:
#
# Table structure for table 'ab_categories'
#

CREATE TABLE `ab_categories` (
`cid` tinyint(3) unsigned NOT NULL auto_increment,
`name` varchar(100) NOT NULL default '',
`position` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`cid`)
) TYPE=MyISAM;



#
# Table structure for table 'ab_forums'
#

CREATE TABLE `ab_forums` (
`fid` tinyint(3) unsigned NOT NULL auto_increment,
`cid` tinyint(3) unsigned NOT NULL default '0',
`name` varchar(100) NOT NULL default '',
`description` varchar(255) NOT NULL default '',
`position` tinyint(3) unsigned NOT NULL default '0',
`topics` mediumint(8) unsigned NOT NULL default '0',
`posts` mediumint(8) unsigned NOT NULL default '0',
`last_post` varchar(32) NOT NULL default '',
`last_post_id` mediumint(8) unsigned NOT NULL default '0',
`last_poster` varchar(32) NOT NULL default '',
`last_poster_id` mediumint(8) unsigned NOT NULL default '0',
`last_time` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`fid`)
) TYPE=MyISAM;



#
# Table structure for table 'ab_posts'
#

CREATE TABLE `ab_posts` (
`pid` mediumint(8) unsigned NOT NULL auto_increment,
`fid` tinyint(3) unsigned NOT NULL default '0',
`tid` mediumint(8) unsigned NOT NULL default '0',
`poster_id` mediumint(8) unsigned NOT NULL default '0',
`post_time` int(10) unsigned NOT NULL default '0',
`poster` varchar(32) NOT NULL default '',
`poster_ip` int(10) unsigned NOT NULL default '0',
`post` text NOT NULL,
`icon` tinyint(3) unsigned NOT NULL default '0',
`options` tinyint(3) unsigned NOT NULL default '0',
`edit_by` varchar(32) NOT NULL default '',
`edit_time` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`pid`),
KEY `fid` (`fid`,`tid`,`poster_id`)
) TYPE=MyISAM;



#
# Table structure for table 'ab_topics'
#

CREATE TABLE `ab_topics` (
`tid` mediumint(8) unsigned NOT NULL auto_increment,
`fid` tinyint(3) unsigned NOT NULL default '0',
`title` varchar(60) NOT NULL default '',
`description` varchar(60) NOT NULL default '',
`starter` varchar(32) NOT NULL default '',
`starter_id` mediumint(8) unsigned NOT NULL default '0',
`last_poster` varchar(32) NOT NULL default '',
`last_poster_id` mediumint(8) unsigned NOT NULL default '0',
`status` tinyint(3) unsigned NOT NULL default '0',
`icon` tinyint(3) unsigned NOT NULL default '0',
`replies` smallint(5) unsigned NOT NULL default '0',
`views` smallint(5) unsigned NOT NULL default '0',
`start_time` int(10) unsigned NOT NULL default '0',
`last_post_time` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`tid`)
) TYPE=MyISAM;
Автор: Daiz13
Дата сообщения: 08.08.2002 13:24
ИМХО:

Зачем эти поля? Это все можно из ab_posts вытянуть.
F> # Table structure for table 'ab_forums'
F> `last_post` varchar(32) NOT NULL default '',
F> `last_post_id` mediumint(8) unsigned NOT NULL default '0',
F> `last_poster` varchar(32) NOT NULL default '',
F> `last_poster_id` mediumint(8) unsigned NOT NULL default '0',
F> `last_time` int(10) unsigned NOT NULL default '0',

добавить поля:
forum_access int(1) default '0',
forum_pass varchar(20) default NULL,


F> # Table structure for table 'ab_posts'
А для чего `poster`?
`edit_by`, `edit_time` лучше хранить в теле сообщения оформленное как
BBCode.


Можно пподробнее для чего description, starter, last_poster?
Все остальные поля уже есть в ab_posts
F> # Table structure for table 'ab_topics'
F> `description` varchar(60) NOT NULL default '',
F> `starter` varchar(32) NOT NULL default '',
F> `last_poster` varchar(32) NOT NULL default '',
F> `last_poster_id` mediumint(8) unsigned NOT NULL default '0',
F> `replies` smallint(5) unsigned NOT NULL default '0',
F> `start_time` int(10) unsigned NOT NULL default '0',
F> `last_post_time` int(10) unsigned NOT NULL default '0',

Кроме того если предвидиться возможность подписки на тему то нужна еще
одна таблица, плюс еще таблица для хранения инфы о последних
просмотреных темах/постах для фичи "Новые сообщения".
Голосования забыли...

Добавлено
А эскизов дизайна еще нет?
Автор: Farch
Дата сообщения: 08.08.2002 14:31
у меня кругласуточный доступ в интернет на хорошей скорости. видел многие доски. сам использую пока у себя phpBB2 с хаками. доволен но хочеться большего. могу стать бета тестером так как свободного времени много. есть аська. провожу много времени Online
вот
Автор: zapimir
Дата сообщения: 08.08.2002 15:52
Daiz13
last_post, last_poster нужны для быстрой работы форума эта и есть та избыточная иформация о которой я писал в начале темы. Согласен все эти поля можно и так определить, зная id поста (можно конечно и его не записывать, а каждый раз искать его) можно определить название темы, а по таблице юзеров и имя юзера, но ведь для этого нужно облазить 3 таблицы, topics, members, posts (причем таблицы весьма не маленькие как по размерам, так и по количеству записей). И так для каждого форума при каждом вызове главной страницы. А так просто все эти данные сохраняются в таблице форумов (это какие-то дополнительных до 74 байт на каждый форум), и теперь чтобы достать все нужные данные о форумах для главной страницы, нужно лишь выполнить один простейший запрос (типа SELECT * FROM ab_forums).

Цитата:
forum_access int(1) default '0',
forum_pass varchar(20) default NULL,

Точно, нужно еще включение/выключение отдельного форума добавить. По-поводу пароля, тоже добавлю, любит народ приватные форумы.

Цитата:
А для чего `poster`?

Это для гостей, чтобы они могли указывать свой ник, и он мог отличаться от зарегеннных ников.

Цитата:
`edit_by`, `edit_time` лучше хранить в теле сообщения оформленное как
BBCode

Можно конечно и так, но тогда нельзя будет сделать так как на ру-боард, т.е. надмись изменено возле отправлено, к тому же может быть полезно иметь дату редактирования отдельно.

Цитата:
Можно пподробнее для чего description, starter, last_poster?

description - описание темы (как, в ру-боард под темой топика).
Остальные поля это опять же избыточная информация для увеличения скорости форума. Т.е. везде придерживаемся правила - максимально простой и быстрый SQL-запрос. И не зыбывайте, что количество просмотров форумов на порядок (если не на несколько порядков) больше количества постов. Поэтому, для увеличения скорости показа форума, допустимо уменьшение скорости приема информации.
Эскиз дизайна (предварительный) был на первой страницы этого топика, я под него буду собирать форум, а там посмотрим...
Автор: shaggoth
Дата сообщения: 08.08.2002 16:02
Farch
та же тема %)
Автор: Guest
Дата сообщения: 08.08.2002 21:26
55

Добавлено
Уважаемый админ! Отпишите меня от подписки на е-мейл eujam@newmail.ru и заодно проверьте работу следующей фичи:

Вы получили это письмо, т.к подписаны на получение ответов по e-mail
Для отписки зайдите в управление подпиской и отпишитесь от ненужных топиков
http://forum.ru-board.com/tools.cgi?action=maillist

Она не открывает нужную страницу. а ящик спамится... Сорри за оффтоп, Заранее спасибо...
Автор: vp7
Дата сообщения: 09.08.2002 08:18
Предлагаю на общее обозрение результаты моей разработки структур таблиц для создания форума
Прошу учесть, что время, потраченное на эту разработку было немногим больше времени, необходимого для набора всего этого дела на очень неудобной ноутбучной клавиатуре, поэтому за некоторые глюки прошу не сильно меня ругать

Ну и естественно, очень жду комментариев и предложений по улучшению.

p.s. благодарю товарища zapimir за его вариант разработки таблиц.


Код:
===============================================
Структура форума
===============================================

1. Список таблиц
----------------
UGroups - Группы пользователей
Users - Пользователи

FGroups - Группы форумов
Forums - Форумы
Topics - Темы в форумах
Messages - Сообщения в форумах

LockIP - Блокировка IP адресов
LockLogin - Блокировка логинов

News - Новости
Mail - Почта

LockWords - Нежелательные выражения


2. Приблизительная структура таблиц
-----------------------------------
======[ UGroups ]======
* Группы пользователей - каждый пользователь может
принадлежать сразу к нескольким группам. Группы
используются для облегчения установки прав доступа
для различных пользователей.

Id - Код группы
Name - Наименование группы
GroupAdmin - Логин пользователя, который имеет право
на добавление других пользоватей в свою группу
AccessLevel - Уровень доступа для пользователей группы
Может принимать значения:
Guest - гость
User - простой пользователь
Power User - "продвинутый" пользователь
Message Admin - позволяет выполнять модеративные
функции во всех форумах
Admin - администратор системы
Users - Список пользователей, принадлежащих этой группе

======[ Users ]======
* Пользователи - описывает пользователей, которые могут
выполнять какие-либо действия в системе.
Id - Код пользователя
Login - Логин пользователя
Password - Пароль
Nick - Ник - позволяет менять время от времени
отображаемое имя при размещении сообщений
Name - ФИО
KeyQuestion - Вопрос, ответив на который можно восстановить
утраченный пароль
KeyAnswer - Ответ на вопрос при утрате пароля
Group - Группа, к которой принадлежит пользователь.
Эта группа основная, но пользователя можно
отнести и к другим группам
Email - Адрес Email пользователя
ICQ - Номер ICQ пользователя
LockStatus - Признак блокировки пользователя. Может принимать
значения:
LockWrite - блокировка написания писем
Lock - блокировка доступа
LockDate - Дата блокировки пользователя (если заблокирован)
LockerId - Код администратора, заблокировавшего пользователя
(если заблокирован)
Avatar - Имя картинки, содержащей аватару пользователя
CookieKey - Cookie, выдаваемая при заходе в форум
LastLogged - Дата/время предыдущего входа в систему
CurrentLogged - Дата/время текущего входа в систему
LoggedOut - Дата/время последнего выхода из системы

======[ FGroups ]======
* Группы форумов - описывает группу форумов. Предназначен
для распределения административных прав между пользователями
Для каждой группы форумов автоматически создается группа
пользователей:
_FG_<код группы форумов>_List - предназначена для того, чтобы
можно было установить список пользователей, которым разрешен
доступ в выбранную группу форумов

Id - Код группы
Name - Наименование группы
ListGroups - Список групп пользователей, которым позволен
просмотр списка форумов
DefReadGroups - Список групп пользователей, которым по умлочанию
будет разрешен доступ для чтения в форумы,
создаваемые в этой группе
DefWriteGroups- Список групп пользователей, которым по умлочанию
будет разрешен доступ для чтения/записи в форумы,
создаваемые в этой группе
DefModerGroups- Список групп пользователей, которые будут по умолчанию
иметь право на выполнение модеративных функций
DefUserModer - Позволяет по умолчанию установить модератором не
группу пользователей, а одиночного пользователя (или
список пользователей

======[ Forums ]======
* Список форумов - предназначена для описания форумов. Для каждого
форума автоматически создается 3 группы пользователей:
_FF_<код форума>_Moder - для задания списка модераторов
_FF_<код форума>_Read - для задания списка пользователей,
которым разрешено чтение сообщений
_FF_<код форума>_DenyWrite - список пользователей, которым
_запрещено_ писать в форуме
_FF_<код форума>_Write - список пользователей, которым разрешено
писать в форуме

Id - Код форума
Name - название форума
ReadGroups - группы пользователей, которым разрешено читать
сообщения из форума
DenyWriteGroups - группы пользователей, которым _запрещено_
писать сообщения в форум
WriteGroups - группы пользователей, которым разрешено писать
сообщения в форум
ModerGroups - группы пользователей, которым разрешено использование
модеративных функций
UserModer - список пользователей, которым разрешено использование
модеративных функций
NotifyUsers - список пользователей, которым будет сообщаться о
добавлении сообщений в форум

======[ Topics ]======
* Темы форумов - содержит темы форумов

Id - Код темы
FId - Код форума
Name - Название темы
AuthorId - Код автора темы
Status - Статус темы. Может принимать значения
Empty - пустой. не содержит ответов пользователей
Normal - нормальное состояние
Closed - закрыт

======[ Messages ]======
* Сообщения - содержит сообщения, размещенны в форумах

Id - Код сообщения
FId - Код форума (в котором размещено это сообщение)
TId - Код темы (в которой размещено это сообщение)
AuthorId - Код автора сообщения
Avatar - Имя картинки, содержащей аватару пользователя
Text - Содержание сообщения
PostedDate - Дата/время размещения сообщения
ModerStatus - Статус сообщения в системе модерирования. может
принимать следующие значения:
normal - нормальное сообщение
warn - предупреждение от модератора
hidden - спрятано от простых пользователей (кроме
модераторов)


======[ LockIP ]======
* Блокировка IP адресов - позволяет заблокировать доступ к системе
с опеределенных IP адресов

Id - Код строки
IP - IP адрес нарушителя
Reason - Необязательное поле с объяснением причины блокировки
BlockerId - Код админстратора, заблокировавшего IP адрес, либо
0, если блокировка была произведена автоматически

======[ LockLogin ]======
* Блокировка логинов - позволяет заблокировать регистрацию
пользователей с определенными логинами. Используется для того,
чтобы не бы попыток регистрации с именами типа ForumAdmin,
root, SysAdmin и других нежелательных имен

Id - Код строки
Name - Запрещаемый логин. Символ '*' используется в
качестве маски, т.е. '*admin' - запрещает
регистрацию всех логинов, заканчивающихся на
'admin'


======[ News ]======
* Новости - содержит новости, которые смогут читать пользователи

Id - Код строки
FId - Код форума. Если значение отлично от нуля, то
новость является новостью форума и их может
размещать любой админ форума. Если значение
равно 0, то новость является новостью системы,
и ее может размещать любой админ системы
Text - Содержание новости
PostedDate - Дата размещения новости

======[ News ]======
* Почта - содержит личные сообщения для пользователей

Id - Код письма
AuthorId - Код автора
DestId - Код того, кому предназначено письмо
Subject - Тема письма
Text - Содержание
PostedDate - Дата размещения
New - Флаг указывающий, является ли это
письмо новым для пользователя


======[ LockWords ]======
* Нежелательные выражения - содержит список нежелательных выражений
и то, что необходимо с ними делать

Id - Код строки
Value - "Текст" нежелательного выражения
Change - На что менять это выражение (в случае, если действие
определено как замена)
Action - Действие с письмом, содержащим вышеуказанное
нежелательное выражение. Принимает следующие
значения:
Nothing - не делать ничего
Change - заменить на то, что указано в
переменной change
Block - заблокировать размещение
сообщения с этим выражением
Notify - Сообщать ли модераторам о таком сообщении
ModerStatus - Установить у данного сообщения следующий
статус модерирования:
normal - нормальное сообщение
warn - предупреждение от модератора
hidden - спрятано от простых пользователей (кроме
модераторов)

Автор: zapimir
Дата сообщения: 09.08.2002 14:39
vp7
Давай такие вещи как структуру таблиц и т.п. обсуждать здесь, так как потом в этом топике найти что-то полезное будет очень сложно.
Автор: vp7
Дата сообщения: 09.08.2002 14:52
zapimir
Отлично. Зарегился у тебя и создал тему здесь (URL http://ib.womir.com/index.php?act=ST&f=28). Кому интересно - присоединяйтесь


Автор: lynx
Дата сообщения: 09.08.2002 22:30
Guest

Цитата:
Уважаемый админ!


support\@ru-board.com
Автор: Kurt
Дата сообщения: 31.08.2002 14:24
Как дела-то идут?
И я так понимаю все перехало на
http://ib.womir.com/index.php?s=6551cca048347e610b55aec1862c0ee6&act=SF&f=28?
Автор: Lord_of_Road
Дата сообщения: 07.09.2002 01:31
Если Вам нужен быстрый форум, то зря Вы его пишите на PHP, Вы
выбрали самый медленный язык, оптимально было бы писать
на перле или парсере.
Автор: ivank
Дата сообщения: 07.09.2002 17:59
Lord_of_Road
Оптимально было бы подумать, прежде чем говорить...
Автор: js
Дата сообщения: 25.09.2002 13:09
Есть предложение писать не на PHP, а на Perl - он позволяет использовать большее количество модулей (уже ранее написанных) и разных типов БД.
От себя - если писать на перле, могу писать модули под Oracle и MS SQL. Так же могу выступать тестером и в последствии оказывать суппорт рабочей борде.
Автор: vp7
Дата сообщения: 25.09.2002 13:12
js, я как раз и решил писать на perl'е.
Вот beta-версия того, что получилось: http://www.ultra-com.ru/cgi-bin/forum/FastBoard.pl (интерфейс взят из IkonBoard)
Автор: shaggoth
Дата сообщения: 25.09.2002 15:57
vp7
что то я бы её fast не назвал
Автор: vp7
Дата сообщения: 25.09.2002 16:11
А почему ты так решил?
Если оно у тебя тормозит, то могу тебя расстоить - у тебя проблемы с каналом. Ибо во-первых, все это крутится на довольно крутом серваке (2x1GGz, 1Gb RAM), а сервак тот к тырнету подключен на 100 mbit (до корбины).

Хотя, на самом деле - в результате особо быстро работать не будет, ибо чем больше возможностей, тем медленнее работает - так всегда.

Но, судя по всему, будет работать быстрее IB.

p.s. А можно будет просто попробовать сравнить скороссть работы при более менее одинаковом размере базы на одном компе.

Добавлено
Kurt, можешь и меня добавить в список
Я написал движок с нуля взяв за основу оформление Invision Board. Писал на perl'е + mySQL. Пока что все находится на стадии тестирования. Если найдутся люди, желающие протестить, то, возможно, будет релиз.

http://www.ultra-com.ru/cgi-bin/forum/FastBoard.pl
Автор: shaggoth
Дата сообщения: 25.09.2002 17:35
vp7

Цитата:
Если оно у тебя тормозит, то могу тебя расстоить - у тебя проблемы с каналом

руборд, и пара конф на инвижн, пашут у меня на порядок шустрее
Автор: vp7
Дата сообщения: 25.09.2002 17:55
shaggoth
Значит, канал ко мне плохой. У меня все очень быстро работает. Попробуй что-нить утянуть с ultra-com.ru и посмотри на скорость. К примеру возьми http://www.ultra-com.ru/PORTFOLIO/video/uc-short.mpg (3.7mb)

p.s. А у меня наоборот - постинг простой мессаги на ru-board обычно длится секунд 5, не меньше. Выходит, что это не рубоард от нагрузки загинается, а канал хреновый? Хмм ... странно. Вроде и пинг приличный, и на пути всего 14 хопов. Совсем странно.

У тебя точно мой скрипт тормозит? И именно скрипт, или весь сайт?


Автор: shaggoth
Дата сообщения: 25.09.2002 18:49

Цитата:
У тебя точно мой скрипт тормозит? И именно скрипт, или весь сайт?

тормозит вся борда...
очень медленно всё по кускам загружает
Автор: vp7
Дата сообщения: 26.09.2002 08:47
shaggoth
Очень странно. Видимо, все-таки дело в канале.
Автор: js
Дата сообщения: 26.09.2002 09:01
Kurt
Включай меня в команду. Perl + (MySQL, Oracle, MS SQL) могу писать. Тестировать и в дальнейшем сопровождать. Я уже было собирался сам свой форум писать...
Автор: Kurt
Дата сообщения: 27.09.2002 14:23
js
Иди
http://ib.womir.com/index.php?s=6551cca048347e610b55aec1862c0ee6&act=SF&f=28?
там все и проси, предлагай.
Автор: yurezg2
Дата сообщения: 08.10.2002 13:47
сорри за оффтоп. хост, где расположен форум по AbsolutBoard, не работает
это временное явление или провайдер навсегда прикрыл этот хост?
Автор: vp7
Дата сообщения: 08.10.2002 14:27
Нет, он просто периодически падает на короткое время. Вот прям сейчас - все отменно работает
Автор: VovanV
Дата сообщения: 11.10.2002 15:56
В какой стадии сейчас разработка?

Страницы: 123

Предыдущая тема: IB на PHP!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.