yura3d |
Отправлено: 20 июля 2009 — 10:27
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
1Bot пишет:Желательно добавить в админку возможность осмысленного удаления файлов из папки UPLOADS, т.е. чтобы можно было определить к какому сообщению принадлежит файл и может удалить вместе/или без сообщения (исправить сообщение, чтобы не было ссылки на файл)
На будущее учту, хотя в файловой версии это сделать достаточно сложно (в отличие от MySQL), т.к. информация о том, к какому именно сообщению прикреплён данный файл, разбросана по файлам данных форума (зайдите в любую папку forumN, там будут файлы вида attaches-M.php, где N номер раздела и M номер темы). Такой разброс необходим, хранить этот список одним файлом в рамках всего форума (по аналогии с таблицами в MySQL) нельзя, т.к. этот файл быстро разрастётся и при его обработке скорость форума значительно упадёт. Искать же сообщение перебором этих файлов тоже нерационально (и недопустимо для больших форумов, т.к. нагрузка на сервер будет возрастать) |
|
|
yura3d |
Отправлено: 20 июля 2009 — 11:02
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
vipraskrutka пишет:yura3d, кстати еще один момент, неплохо было бы чтоб прикрепленные файлы складывались не в одну папку, а поделить их, по разделам например, т.е. в папке уплоадс чтоб были папки 1,2,3... , в общем думаю ты в курсе, что если в одной папке будет дохрена файлов - открытие таких папок занимает много времени и ресурсов, а на больших форумах или на форумах, тематика которых предполагает прикрепление дохрена файлов - может случиться полный пипец, к примеру vds с 1гб оперативки напрягается сверхсильно при открытии папки с 50к файлами, на шаред хостинге такого юзера бы уже выгнали ...
Скрипт построен таким образом, что эта папка никогда не читается (на чтение больших объёмов данных средствами PHP и уходит львиная доля ресурсов), обращаться можно лишь к конкретному файлу в папке (для этого и создаётся своеобразная база данных прикреплённых файлов). Создавать папки для прикрёпленных файлов в каждом из разделов не очень разумно, т.к. если в будущем мы захотим переместить тему из одного раздела в другой, то придётся перемещать и прикреплённые файлы, и если файлов пользователи неприкрепляли на, скажем, 100 Мб (у нас на сетевом форуме, где тестировался ExBB 2, бывало и гораздо больше, люди целые фильмы цепляли), то перемещение темы закончится не очень хорошо (а ведь в ExBB 2 есть функция массового перемещения тем, боюсь даже представить что будет в этом случае) |
|
|
yura3d |
Отправлено: 21 июля 2009 — 20:19
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Victor
Уже говорил выше, нельзя хранить базу данных одним файлом (единым списком). Когда такая база дорастёт хотя бы до 2 Мб (а это не более сотни-двух файлов в базе), Вы уже получите солидное подтормаживание при её чтении и обработке, а после 20 - 30 Мб скрипт перестанет укладываться в отведённые стандартные 30 сек. для выполнения. К сожелению, тут всё не так просто, как в случае с таблицами в MySQL. PHP обрабатывает файлы (да и вообще любые большие объёмы данных) в сотни и даже тысячи раз медленнее Си (на котором, к слову, и написаны MySQL и PHP). Ключ к быстрой работе этого форума кроется в том, что большие массивы данных по возможности разбиваются на небольшие файлы-фрагменты, и при очередном запуске скрипта всякий раз обрабатываются не все данные, а только небольшая их часть. С поиском (особенно текстовым) по файлам всё тоже далеко не так просто, хотя создание индексных файлов (по аналогии с индексами для полей в MySQL) в большей степени решает проблему. Является ли описанная выше концепция разбиения данных по небольшим файлом идеальным подходом? Конечно же, нет! Но такая концепция позволяет, жертвуя некоторыми возможностями и функциями, достичь высокой скорости выполнения скриптов и минимального размера текстовой базы данных форума. Уже где-то приводил пример, после конвертации форума ExBB (база которого занимала 28 Мб, с учётом поискового индекса) на IPB 1.3 база стала занимать 71 Мб |
|
|
yura3d |
Отправлено: 21 июля 2009 — 20:49
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Victor пишет:в общем то с конвертацией понятно хотя для платных хостингов разница объемов незначительна... другое дело быстрота работы скрипта с этой самой базой
В MySQL в некоторых случаях объём БД (именно БД, а не хранимых данных) может увеличиваться в геометрической прогрессии. Простой пример, для поля текста сообщений в таблице сообщений мы отводим 65536 символов (стандартный тип text, именно он применяется для хранения текстов сообщений в подавляющем большистве случаев), но абсолютное большинство сообщений имеют значительно меньшую длину, и в результате получаем огромный массив на жёстком диске никак не используемого, и при этом занятого пространства. Я согласен, что статическая типизация позволяет быстрее организовать выборку и поиск, но с другой стороны объёмы файлов, в которых хранятся таблицы, также играют не последнюю роль в скорости работы (особенно когда такие файлы сильно фрагментируются на жёстком диске) |
|
|
|