Вопрос № 88805: Здравствуйте.
Нужен ваш совет.
Есть идея написать движок сайта:
несколько шаблонов: главная, остальные страницы, ошибка 404 (через mod_rewrite);
данные хочу хранить в папках, страницах. например путь url: /articles/php/1/article....
Вопрос № 88.805
Здравствуйте.
Нужен ваш совет.
Есть идея написать движок сайта:
несколько шаблонов: главная, остальные страницы, ошибка 404 (через mod_rewrite);
данные хочу хранить в папках, страницах. например путь url: /articles/php/1/article.7745/page.3 и на сервере файл article.7745.html лежит в папке _data/articles/php/1/
(page.3 уже обрабатывается как номер страницы, скриптом)
такие данные как title, description, keywords, template и т.д. предполагаю хранить в том же файле (article.7745.html) в начале странице как теги:
<title>заголовок страницы</title>
<description>описание</description>
<template>index</template>
Т.е. отдельно таблицы в базе данных не создавать. Хранение данных в БД считаю не удобным,
Так как чтоб создать страницу или раздел мне необходимо прописать в БД все необходимые данные, такие как тот же заголовок, описание, ключевые слова, место хранения и путь url к странице. Здесь же я могу на локальной машине создать раздел, страницы и выгрузить.
Из панели администратирования я так же могу изменить данные в самой странице.
К тому же в процессе развития мне могут понадобится новые свойства страницы, раздела такие как <index>, <title-menu>, <cashe>, <access> и т.п. и это может быть очень много в зависимости от потребностей, а каждый раз менять структуру таблиц не приятно.
В дальнейшем понадобится система пользователей и доступа к страницам сайта. Вот здесь не знаю. Если я в начале создаю движок на файловых данных можно будет реализовать систему пользователей на файлах и как это повлияет на требования к ресурсам и время выполнения.
Система пользователей хочу реализовать как:
Все данные пользователей хранятся в папке _users в своих файлах (например admin.user, bob.user)
А в них уже данные такие как пароль, почта и т.д. Одна запись одна строка и один элемент массива array=file().
А вот как мне например из 1 тыс. пользователей определить администраторов, модераторов, пользователей. А так же скажем поиск пользователей, скажем ‘A%’ ? Перебирать все файлы долго.
Может быть мне кто ни будь расскажет как обстоит дела с пользователями на больших форумах без БД
Что Вы мне посоветуете про саму идею хранения данных в файлах.
Отвечает: Устинов С.Е.
Здравствуйте, Оськин Дмитрий Владимирович!
Сильно сомневаюсь, что существуют большие форумы без БД. Зачем изобретать велосипед, если есть возможность воспользоваться уже существующим, причем бесплатным? (например MySQL)
Попробуйте реализовать хранение и обработку нескольких пользователей в файлах и в БД - сравните обе схемы обработки - если при работе с файлами Вам нужно будет обеспечивать целостность, защищенность файла (например, если в один и тот же момент один экземпляр скрипта сохраняет и переписывает файл, а второй экземпляр в это же время пытается его прочесть... а если обращений к этому файлу в данный момент еще больше), проверять "а до конца ли дописались изменения в файл, или в процессе обрабоки что-то оборвалось",
то с MySQL все сводится к 1-2 строкам.
Насчет поиска - для обработки файловых данных Вам во-первых понадобится своя процедура обработки, во вторых это будет в несколько порядков дольше делаться, чем в БД (в той же MySQL это делает 1 запрос).
Также с хранением дополнительных данных о странице - это все можно легко сделать с помощью БД, а с помощью файлов намного сложнее.
Ведь можно и ложкой вырыть яму под фундамент и т.п., а можно для этого дела взять экскаватор ;) Предлагаю воспользоваться "экскаватором" MySQL.
Ответ отправил: Устинов С.Е. (статус: Специалист)
Ответ отправлен: 27.05.2007, 15:51
Отвечает: Sea
Здравствуйте, Оськин Дмитрий Владимирович!
Такое впечатление, что вы боитесь баз данных:) А ведь они могут дать много полезного, что иначе прийдется реализовывать самому. Что? Ну к примеру поиск. Реализовывать свою поисковую машину вещь достаточно непростая, хотя тут может помочь например Zend framework. Ну или можно обойтись и гугловским поисковиком, да еще и копеечку получать с этого.
На счет статей могу сказать одно - ваша реализация не самая удачная и если не предусмотреть средства кэширования, то сервак вы конечно нагрузите, хотя для малопосещаемого ресурса это не так актуально. Да и зачем изобретать велосипед, да еще и с квадратными колесами:)
Что касается системы авторизации, то ее лучше сделать на БД, хотя тоже не так важно. И если разработать хороший механизм, то и производительность не пострадает.
Если вы будете хранить данные о пользователях в файлах *.user и при этом еще и в публичной папке, то без проблем не обойтись. Что будет если злоумышленник обратится к такому файлу? Лучше уж использовать *.php и первой строкой прописать <?php exit(); ?> Тогда сервер не позволит увидеть секретные данные.
А на счет поиска пользователей, то можно смотреть в сторону glob() - полезная вещица.
А вообще - подумайте об использовании баз данных. Ведь их не просто так придумали - значит это зачем то нужно. Но и увлекаться не стоит - хранить картинки в базе глупо.
Я не увидел не одного убедительного аргумента против баз, а вот в их пользу можно привести множество.
Ответ отправил: Sea (статус: 2-ой класс)
Ответ отправлен: 27.05.2007, 23:08