![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| cccr85 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 файлов. Я думаю нормально. Как думаете, есть ли в моих расчетах ошибки? З,Ы, бд не предлагать, сайты совсем маленькие, и бд будет лишней. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |