Движок сайта без базы данных.

Dimush

Guest
Движок сайта без базы данных.

Хочу сделать движок сайта работающего без базы данных. Структура страниц следующая.
Есть возможность создавать неограниченное количество разделов. Разделы сами по себе одноуровневые(т.е. внутри раздела других быть не может) и существует 5-ть типов разделов:

1. Индексная страница – весь раздел состоит из одной странички
2. Индексная страница + вложенные страницы – аналогично первому, + раздел содержит вложенные странички, т.е. на странице индексной странице раздела помимо текста, будут располагаться ссылки на странички.
3. Индексная страница + вложенные страницы с описанием – аналогичен разделу №2 с той разницей, что позволяет добавлять описание для каждой ссылки на вложенную страницу раздела.
4. Индексная страница + вложенные страницы с описанием и изображением – аналогичен разделу №3, с той разницей, что помимо описания для каждой ссылке на вложенную страницу раздела есть возможность добавить графическое изображение.
5. Модуль – в данном случае будет подключаться модуль, например гостевая книга.

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

Как посоветуете сделать?

-~{}~ 12.12.04 19:34:

Есть такая идея:

Информация о типе раздела храниться в файле ./structure/types.inf
ид раздела^!^имя ссылки^!^заголовок страницы^!^тип раздела^!^
Текстовое содержание страниц храниться в ./structure/pages/id.html
хтмл содержание страницы
Для обратной связи страниц с разделами + наименование ./strucrure/conected/№.cnd
здесь связываются страницы с разделами
Индексы страниц хранятся аналогично файлам ./structure/page_inx/id.html
индексы
Мета-описание страниц хранится ./structure/meta_inf/id.html
метаописание
Страница вложенная в раздел ./structure/ид_раздела.inc

так для раздела первого типа, она будет пустой:
для раздела второго типа она будет содержать ссылки на страницы данного раздела
ид_страницы_в_которой_храниться_html_содержание страницы принадлежащей разделу \n
для раздела третьего типа она будет следующего вида:
ид_страницы_в_которой_храниться_html_содержание страницы принадлежащей разделу^!^ид_страницы в которой храниться описание \n
для раздела четвертого типа:
ид_страницы_в_которой_храниться_html_содержание страницы принадлежащей разделу ^!^ид_страницы в которой храниться описание^!^наименование изображения\n
для раздела пятого типа
ид_модуля^!^наименование модуля


Т.е. весь текст не зависимо от того, страница это или просто описание ссылки храниться в /pages

Информация для «связи» страница-раздел, а так же наименования страниц хранятся в ./strucrure/conected/№.cnd
В каждом файле хранится по 10-ть записей для страниц, так для описания страниц с идентификаторами от 1 до 10 информация храниться в файле 1.cnd, от 11 до 20 в 2.cnd
PHP:
1.cnd--------------------
1^!^1^!^name  //где первое значение до разделителя, идентификатор страницы, второе значение
2^!^1^!^name //после разделителя идентификатор раздела которому принадлежит страница
3^!^2^!^name
4^!^1^!^name
#^!^#^!^# //если страница не существует, то она заменяется #-ом
#^!^#^!^# //это необходимо для ускорения доступа к информации, т.к. в этом случае мы просто
#^!^#^!^# //воспользуемся функцией file, и безо всяких сверок обратимся к file[$i]
8^!^4^!^name
9^!^4^!^name
10^!^2^!^name
---------------------------
Методика работы с cnd файлами.
Берем ид_страницы = 15, делим на 10 округляем до целых в большую строну = 2 – номер cnd файла в котором хранится ид_раздела которому принадлежит файл, и наименование страницы. Далее открываем полученный файл и напрямую обращаемся к заданной строке массива.
 

Dimush

Guest
sakon, это второстепенно, сначала нужно оптимизировать, что бы не писать лишнего и не грузить сервер без необходимости

-~{}~ 12.12.04 19:43:

кстати, я понятно выразил свою идею?
 

sakon

П..и.н..ок
Не понимаю проблемы загрузки сервера. Даже если пишешь под большой портал. Я сам пишу движок с базой на тхт файлах, и пок не вижу проблемы с загрузкой сервера и временем выполнения задачи, даже с учетом того, что только меню у мя состоит больше, чем из 500 пунктов.

-~{}~ 12.12.04 19:48:

не совсем. особенно с обработкой cnd файла.
 

clevel

Новичок
а зачем на файлах работать? чем бд не устраивает?
если из экономии средств на оплату хостинга - то глупо. Если с расчетом на нагрузку - тоже не оправдание. Можно использовать файлы в качестве хранилища для кешированных страниц.
Имхо, БД очень необходимая вещь, если проект не домашняя страничка.
 

sakon

П..и.н..ок
не всегда есть возможность использовать базу. особенно на халявном хостинге. :)
 

Dimush

Guest
>не совсем. особенно с обработкой cnd файла.

Собственно говоря у каждой страницы есть уникальный идентификатор, т.е. идентификатор по которому можно однозначно определить к какому разделу принадлежит страница. Для этих целей использую cnd файл, в котором храниться идентификатор страницы^!^идентификатор раздела^!^наименование ссылки на страницу.
Если все в один файл скинуть, и будет очень много файлов будет, искать, переименовывать добавлять и все остальное будет занимать слишком много времени.
Поэтому хочу делить на много файлов, так страницы с ид с 1-го по 10-й будут храниться в файле 1.cnd, с ид с 11 по 20-й будут храниться в 2.cnd

Так если нам нужно получить ин-фу о странице с идентификатором 15, определяю(методика описана выше) номер cnd файла, и обращаюсь к пятой строке этого файла, откуда узнаю все, что мне нужно. Я думаю так будет гораздо быстрее.

Правда при генерации индексной странице раздела, нужно как-нибудь это дело по правильному сделать, что бы для каждой ссылке не открывать файл, который возможно уже открывался ранее.
И для постраничного вывода, как-нибудь придумать, что бы для каждой страницы не генерировать весь список.

Что еще не понятно?

-~{}~ 12.12.04 20:07:

а зачем на файлах работать? чем бд не устраивает?
Откровенно говоря, хотел бы написать бесплатную CMS, чуть лучше тех которые есть, для «повышения клалификации».
Думаю ее будут использовать в основном на бесплатном хостинге, либо на том который за 3 бакса в месяц, где даже если и есть БД, то тормозит неимоверно.

-~{}~ 12.12.04 20:08:

Можно использовать файлы в качестве хранилища для кешированных страниц.
насколько кэшированных? Хранить хтмл копию сайта? Или ...?
 

sakon

П..и.н..ок
Автор оригинала: Dimush
Если все в один файл скинуть, и будет очень много файлов будет, искать, переименовывать добавлять и все остальное будет занимать слишком много времени.
Поэтому хочу делить на много файлов, так страницы с ид с 1-го по 10-й будут храниться в файле 1.cnd, с ид с 11 по 20-й будут храниться в 2.cnd
IHMO - с одним файлом работать гораздо проще, чем (как в моем случае) с ПЯТЬЮДЕСТЬЮ . При добавлении в раздел - проще вывести этот раздел в форму и править, добавлять, удалять, и т.д.
Но в данном случае - флаг те в руки, только стоит ли работать в "козину". Чем сложнее структура движка, тем меньше с ним захотят работать...........
 

FaRaOn

Новичок
файлы хороши при небольшом их кол-ве....
Когда много - легко запутаться, да и чтение кучи файло - медленно слишком.
В БД запутаться сложно, но можно :D
Хотя бывали случаи когда БД просто падала, и сами понимаете тяжко тогда юзверям было.
 

Dimush

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

:)

вывести этот раздел в форму и править, добавлять, удалять, и т.д.
думаю тебе нужно работать над своими интерфейсами.
 

sakon

П..и.н..ок
Не вижу никакой связи. Со времен изобретения паровых машин конструкция и принципы функционирования "самодвижущихся экипажей" усложились в тысячи раз... а интерфейсы стали только понятнее.
угу.
думаю тебе нужно работать над своими интерфейсами.
Чем в данный момент и занимаюсь....
Форму это так- от балды.
 

Dimush

Guest
Когда много - легко запутаться,
только если утром, а пролым вечером был чемпионат по литерболу.
бывали случаи когда БД просто падала
те кто понимает, что 15 $ в месяц за хостинг это минимум, так же понимают что такое бесплатные CMS.
Т.е. у меня другого выбора нет.

-~{}~ 12.12.04 21:03:

так же понимают что такое бесплатные CMS.
хотя я стараюсь, поэтому и поднял тему на этом форуме.
 

sakon

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

FaRaOn

Новичок
Я незнаю у меня просто и дня без алконавтики не проходит...
Литербол - неотъемлимая часть творческого процесса.
Одна баклашка = 3-м рабочим скриптам :D
На трезвую только поправлять ошибки и набирать все это дело в notepad'e хе хе

Не я действительно встречался с тем что БД падала и информация восстановлению не подлежала....
 

Dimush

Guest
де находится идентификатор раздела ХА_ХА, и как его найти?
Не правильная постановка вопроса. Нужно так: "есть идентификатор раздела, как узнать, что это раздел ХА_ХА"

-~{}~ 12.12.04 21:25:

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

sakon

П..и.н..ок
У мя больше 500 страниц (файлов). Все выводится на 1 странице. Существует 7 разделов и разное кол-во подразделов. на моем компе (апач на ХР) задержек незамечено.
жизть такая у нас...
Должен согласится.........
 

Dimush

Guest
sakon
вообще надо попробовать, уже сам сомневаюсь, но хочу заметить, что на твоем компе твой сайт посещает только один человек... а это не боевые условия ;-)

-~{}~ 12.12.04 21:43:

sakon а ты у хостера пробовал?
 

sakon

П..и.н..ок
на твоем компе твой сайт посещает только один человек... а это не боевые условия ;-)
Нуууууу. Тот кто идет на халявный хостинг, на большую посещаемость и не расчитывает. Как тока посещаемость становится нормальной, уходят на нормальный хостинг..... и платят за нормальный сайт нормальные деньги.
 

SiMM

Новичок
Dimush, как бы ты не делал свою базу на файлах - всё это уже давно сделано в частности в MySQL и, думаю, гораздо лучше и более опртимизированно, чем сделаешь это ты. В любом случае, затраты времени на создание аналога будут несоизмеримо большими, да и удобство SQL-запросов в виду их простоты ты врядли сможешь реализовать с таким же быстродействием ;)
 

sakon

П..и.н..ок
SiMM
Разговор о бесплатном хостинге, на котором в большенстве случаев доступ к базе отсутствует. (хотя на некоторых РНР нет)
 
Сверху