Форум без баз данных

Николай

PHP - CooL
Форум без баз данных

Народ, поделитесь опытом, если не сложно...

Вот написал я свой форум, он не использует базу данных для хранения инфы, в принципе, вполне реально работает. Но если туда запостерить где-нибудь 20 тем по 1 мб, то он начинает подтормаживать(раньше время иполнения скрипта - 0,0067125381, теперь доходит до 10 секунд). Мне просто интерестно как лучше хранить инфу, а потом её оттуда вытаскивать.
Я делаю что-то типа:
name<`>mail<`>вопрос<`>сообщение<`>...<~>и опять name<`>mail...
Потом делаю сплит(split("<~>")) и еще один сплит(split("<`>")). Так и получаю инфу.
Может это несколько коряво и не правильно... но я делаю так.

Ну и сам вопрос: как лучше хранить инфу, а потом её оттуда вытаскивать?

ЗЫ: Просьба не писать о том, что надо все делать при помощи MySQL(я и сам знаю, да вот возможности нет...)
 

Stm

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

Фанат

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

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

_eLs_

Guest
a esli ktotot v tekst soobshenie napishet

<~>

togda ne pravilno budet tvoy forum rabotat

nu xotyabi zdelay s pomoshi xml


no vsotaki bez bazi dannix vsoravno dirmo poluchetsya :)
 

Фанат

oncle terrible
Команда форума
_eLs_, а что - если кто-то в тело сообщения напишет тег xml - ничего не будет?
вообще, всем любителям пихать хмл во все места, я бы очень рекомендовал одну интересную статеечку:
http://russian.joelonsoftware.com/Articles/BacktoBasics.html

ты бы сначаал прикинул, СКОЛЬКО ВРЕМЕНИ затратит пых на парсинг ДВАДЦАТИМЕГОВОГО xml файла, а потом уже рот раскрывал на эту тему.
а точнее - не раскрывал.
 

Николай

PHP - CooL
2 Фанат
//если ты хранишь все сообщения форума в одном файле - это неправильно.

Ты уверен? Перед этой версией форума у меня была версия 1.0, в которой я делал как ты сказал (надо в одном файле хранить только заголовки форумов, а сами ветки - в отдельных файлах ). Этот форум был еще тормозней того, что получился сейчас...

2 _eLs_
А если кто-то напишет: <~>, то он тут же преобразуется в <_~_>...

2 Stm
Можно несколько по-подробнее?
 

_eLs_

Guest
Originally posted by Фанат
_eLs_, а что - если кто-то в тело сообщения напишет тег xml - ничего не будет?
вообще, всем любителям пихать хмл во все места, я бы очень рекомендовал одну интересную статеечку:
http://russian.joelonsoftware.com/Articles/BacktoBasics.html

ты бы сначаал прикинул, СКОЛЬКО ВРЕМЕНИ затратит пых на парсинг ДВАДЦАТИМЕГОВОГО xml файла, а потом уже рот раскрывал на эту тему.
а точнее - не раскрывал.
_eLs_, а что - если кто-то в тело сообщения напишет тег xml - ничего не будет?


hmm ..... ti dumaesh tolko v php est takaya funkciya htmlspecialchars ?

toest v xml toje mojna zdelat tak chtobi otarazat xml tegi

-> http://www.w3schools.com/xml/



no chem bolshe xml fayl budet tem programma medlenne budet rabotat - etim ya soglasen :)
 

Ital

Guest
вообще есть ведь форумы сделанные без mysql, например edgeBoard, посмотри как они это делают, там что-то типа:
есть папка data в которой для каждой темы своя папка(по идентификатору), в этой папке для каждого сообщения свой файл, также тутже для каждого сообщения файл где хранится инфа об написавшем(имя, тема сообщения и т.п.)
 

Фанат

oncle terrible
Команда форума
hmm ..... ti dumaesh tolko v php est takaya funkciya htmlspecialchars ?
Ага, то есть, ты знаешь о ее существовании?
А чего ж тогда влез со своим замечанием вообще?
по-твоему, все, кроме тебя, идиоты, и разделитель никак не нейтрализуют?

У тебя логики в голове хоть грамм есть?
сначала ты говоришь про разделитель, а потом, КАК РЕШЕНИЕ предлагаешь хмл.
я фигею с таких "советчиков"...
 

Фанат

oncle terrible
Команда форума
Ital, думаю, нет смысла, все-таки, хранить отдельные сообщения. как их выводить? все равно же все в память считать, чтобы отсортировать.
Я думаю, нормально будет файл на сообщение.
очень хочется посмотреть на форум, который тормозит при таком подходе.

Нет, если файл 20 метров разбивается сплитом, то тормозить он будет по любому.
Можно и на жигули 20 тонн нарузить, и полюбоваться, как она в землю уйдет.
вопрос - зачем?
 

Wingley Dog

Guest
Да можно не сортировать.

Я както делал форум, тоже разбивал по сообщениям, но у меня был файл дерева сообщений. В нем только ссылки на сообщения. Соответственно по ссылке передавался идентификатор сообщения, потом оно попросту инклудилось.

Проблемы появились при попытке создать статистику по форуму и более менее порядочную админилку. Тут без БД тяжко. 8)
 

Wingley Dog

Guest
упс.
тормоз, непральна понял предыдущий пост. 8/
 

Wingley Dog

Guest
Да? Почему? Думаешь самому считать его и вставить будет быстрее?...
Нада попробовать 8/

Я свой так в боевых условиях и не попробовал...

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

Sindel

Guest
Wingley Dog
Ну и сам вопрос: как лучше хранить инфу, а потом её оттуда вытаскивать?
Я вот тоже сначала так делал. Строку|разбивал|в|массив. Но потом от этого отказался в силу некоторых причин, которые не хочется объянять. Теперь юзаю serialize() и unserialize(). Размер файла из-за этого увеличивается на 20-30%. Зато быстро и надёжно.

ExBB форум - opensource форум на текстовых файлах (русский проект)

Да... и для форума надо хранить данные для каждого топика отдельный файл. Совет: explode() быстрееc split()'a, т.к. split принимает рег. выражение, а explode символ[ы]. Но я бы использовал serialize() и unserialize()...
 

Фанат

oncle terrible
Команда форума
которые не хочется объянять.
А зачем тогда вообще было выступать в этом случае?
Насчет "быстро" - с этим можно и поспорить, вообще-то.
я так думаю, что ансериалайз на примере, который привел автор топика, плагополучно себе загнется.
 

$skip

Guest
Попробуй сделать тык:
создаешь лог добавленных сообщений в формате $название;$дата в формате csv и т.д. каталог где будут хранится форумы в тектовых файлах(название файла - тема форума). Для отображения считывай лог построчно с разбором csv подлючай файлы форума и показывай. У меня гостевая книга работает по такомуже принципу. Формат и структуру определишь сам, не маленький.
 

Фанат

oncle terrible
Команда форума
построчно читать - это не самый оптимальный способ.
имя файла как имя темы - это вообще бред.
у тебя в гостевой такого нет, поэтому не надо советовать то, чего вообще не знаешь.
Смысла городить отдельные файлы и кучу строчек - тоже нет.
вполне достаточно писать
- один файл индексный на форум, с заголовками тем
- и по одному файлу на тему, где сообщения лежат построчно.
 
Сверху