Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Новости на файлах, Может кто что подскажет? Хранение 
:(
    Опции темы
cccr85
  Дата 13.7.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 13.7.2010

Репутация: 2
Всего: 2



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

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

Нам надо:

1. Выводить новости по несколько штук, по сколько не известно, и может поменяться в процессе.
2. Создавать новость, при этом нужно указывать дату с которой можно эту новость выводить.
3. Изменять новость, удалять, скрывать, открывать.

Как я думаю поступить, создам папку /datanews/ в нее положу файл all.news в котором будут содержаться мета информация по новостям(какая, дальше), а так же файлы 1.news 2.news и так далее.

Формат файла all.news такой: createDate|id_news!activ итого получаем 10 символов дата + 5 символов ид + 1 символ статус новости + 2 символа разделители + 4 символа переход на новую строку = 22 символа 1 запись новости = 22 байта.

Для ид новости мы взяли 5 символов, получаем максимум 99999 новостей, 99999*22/1024/1024 ~ 2.01 мегабайта. сто тысяч новостей это очень много.

Теперь какие я вижу проблемы при работе функций, вывод все понятно, читаем файл, формируем массив, получаем нужные ид, и вуаля у нас есть новости.
Создание тоже не представляет проблем, достаточно вставить запись в начало файла. 
Изменение новости, ну с текстом и заголовком все понятно, быстро и бесшумно, а вот как быть если поменяли дату новости, если поменяли статус новости, удалили новость, это ведь придется туда сюда переписывать файл. А если админ неправильный, и будет менять через каждые пару секунд, не комильфо в общем. А может не изменять весь файл, а просто вставлять строчку с тем же ид в начало файла, но уже с другим показателем activ(0-показывать, 1-скрывать, 2-удаленна) и датой, тогда нам всего лишь придется чуть модифицировать создание массива при чтении, чтобы для новости с одним ид учитывалась только ближайшая к началу файла строчка. + нужно будет раз в неделю/месяц оптимизировать файл всех новостей, удалять лишние файлы, оптимизировать ид.

Много файлов в одной папке тоже не гуд, по этому мы будем хранить по 100 файлов в каждой. Для этого файлы 1.news 2.news и т.д. мы будем размещать в под папках. Например если ид новости меньше 100, то папка 0, если ид новости с 100 до 199 то папка 1, если ид новости от 200 и до 299 то папка 2, и так далее. Получаем 99999 / 100 = 1000 папок. Многовато.. Поэтому будем хранить по 250 файлов в папке, получим ~ 400 папок, и в каждой 250 файлов. Я думаю нормально.

Как думаете, есть ли в моих расчетах ошибки?

З,Ы, бд не предлагать, сайты совсем маленькие, и бд будет лишней. 
PM MAIL   Вверх
skyboy
Дата 13.7.2010, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(cccr85 @  13.7.2010,  14:07 Найти цитируемый пост)
бд не предлагать, сайты совсем маленькие, и бд будет лишней.  

sqlite
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.