yura3d |
Отправлено: 29 августа 2009 — 10:49
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
bruno пишет:Понятно.
Но тоже не совсем гуд.
А нельзя разве как-то стыковть два файла вместе при этом не нарушая визуальной целостности темы?
Т.е. разбивать точно также файл темы на части, но при этом не разделяя саму тему?
По-моему технически это примерно также может выглядеть.
Так подобная стыковка нескольких файлов темы в рамках одной темы была реализована в более ранних версиях (по крайней мере, в ExBB 1.9.1 и первых сборках ExBB Full Mods), только вот работало это не очень. Сложность заключается не столько в обеспечении визуального единства одной темы в нескольких файлах, сколько в обработке таких тем. Чтобы не описывать всё долго, приведу пример. Предположим, Вы удаляете (перемещаете) тему, в которой много ответов (как Вы потом предложили, 500 страниц). Пиковый расход ресурсов (как следствие, увеличение нагрузки на сервер) и пиковое снижение скорости работы форума увеличится примерно в n раз, где n - кол-во файлов, из которых состоит тема (в текущей реализации, не допускающей деления тем на файлы, n = 1). Но помимо расхода на удаление (перемещение) файлов темы, который по сути не такой большой, есть также дополнительные расходы, такие как обновление профилей пользователей, оставлявших в удаляемой (перемещаемой) теме сообщения. Если тема удаляется, то из информации статистики сообщений пользователя (которая есть в файле профиля каждого пользователя) нужно вычесть число сообщений, которые пользователь оставил в удаляемой теме (соответственно обновляется и счётчик сообщений пользователя, значение которого также хранится в файлах профилей пользователей). Если тема перемещается, то также обновляется статистика сообщений пользователя (для исходного раздела, из которого перемещается тема, и конечного раздела, в который перемещается тема). Подобное обновление профилей "на лету" - довольно ресурсоёмкая задача, нагрузка на удаление/перемещение темы (с учётом уже имеющегося n) возрастает ещё в приблизительно m раз, где m - кол-во пользователей, отвечавших в тему, причём отношение m/n лежит в пределе приблизительно от 1,5 до 3. Снижение же нагрузки методом разбиения темы на файлы (при сохранении единства представления темы, как Вы предлагаете) можно получить только для случая просмотра темы, либо при обработке темы частями. Последний метод наиболее универсальный, но его применение не удобно и не всегда практически реализуемо в рамках единого представления, поэтому и было принято решение разделять большие темы на части
Используемый вариант разбития тем на части мне нравится и как концепция, форум по сути сам себя архивирует, закрывая старые дискуссии и открывая их продолжения. На многих крупных форумах (например, onliner.by или приведённый выше ru-board.com) подобная практика широко распространена, только там разделения выполняются администраторами/модераторами вручную, у нас же это сделано автоматически
Многие форумные движки (яркий пример - IPB) чтобы снижать и без того сильную с их стороны нагрузку на сервер, при удалении тем не обновляют счётчики сообщений у пользователей, отвечавших в удаляемые темы, т.е. обновление информации профиля "на лету" невозможно (подобный вопрос обсуждался здесь). Для актуализации информации там применяется метод полного пересчёта сообщений пользователей, но пиковая нагрузка этого метода (равно как и частая необходимость его применения) также далеко не лучший вариант |
|
|
yura3d |
Отправлено: 30 августа 2009 — 14:36
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
bruno пишет:О переносах я не подумал.
Тогда да, это единственное решение....
Хотя... есть ещё один вариант - делать для каждого поста отдельный файл.
Тогда нагрузка на сервер будет вообще маленькая, впринципе такая же как при работе с таблицами в БД.
И при этом варианте темы можно не делить и они могут быть сколь угодно большими.
Что думаешь?
В БД применяется иной принцип, принцип потокового хранения данных, поэтому для извлечения какой-то части информации из одной таблицы (каждая таблица в БД - файл) достаточно знать только расположение этой информации и занимаемый её объём. Первое достигается за счёт использования индексов, второе задаётся на этапе создания таблицы. В результате мы можем читать из файла только те данные которые необходимы, а не считывать всё подряд и потом заниматься выборкой
Вариант с хранением каждого сообщения в отдельном файле также неприемлем из-за особенностей работы с файлами. На операции открытия, закрытия, блокировки и прочие служебные операции с файлами также тратится часть ресурсов, и чем больше число файлов, с которыми мы работаем, тем больше ресурсов тратится на эти служебные операции. В то же время при работе с одним файлом темы ресурсы на его открытие, закрытие и прочие служебные операции расходуются лишь единожды, соответственно нагрузка на сервер меньше, скорость работы выше. За примером далеко ходить не нужно, выше Вы приводили пример темы с 500 страницами, предположим, на каждой странице распологается 10 сообщений, итого 5000 файлов. Теперь представьте себе нагрузку, которая будет идти при попытке поиска по такой теме, ведь нужно за отведённые 30 секунд пересмотреть 5000 файлов со служебными расходами на их обработку. В итоге Вы прочитаете всё тот же объём данных, который был бы и при размещении всех сообщений в одном файле (!!!), но при этом потратите немалую часть ресурсов на служебные операции с файлами. Ситуация ещё более осложниться, если сообщения содержат большие по объёму тексты. Или ещё более сложный пример - индексирование поиска. Предположим, у Вас в каком-то разделе находится, допустим, 3 темы из 500 страниц, итого для индексации этих тем индексирующий скрипт должен проанализировать немного-немало 15000 файлов, ни один хостер такого изврата не поймёт
Кстати, вышесказанное в этом и предыдущем моих сообщениях в разной степени справедливо и по отношению к движкам на MySQL
M-A-X пишет:нужно было добираться не через параметры forum и topic, а только topic.
M-A-X пишет:Сделать нумерацию тем не в пределах каждой категории, а в пределах всего форума.
В принципе, ничего сложного в организации подобного обращения к темам не вижу, но для реализации подобной возможности придётся основательно переписывать движок (поскольку изначально применялся другой метод обращения к темам) и соответственным образом конвертировать базы данных уже имеющихся форумов. Поскольку это довольно большой объём работы, более простым решением вижу реализацию переадресации со старого адреса темы на новый |
|
|
bruno |
Отправлено: 30 августа 2009 — 16:13
|
Junior Member
Покинул форум
Сообщений всего: 85
Дата рег-ции: Авг. 2009
Репутация: 1
|
yura3d пишет:За примером далеко ходить не нужно, выше Вы приводили пример темы с 500 страницами, предположим, на каждой странице распологается 10 сообщений, итого 5000 файлов.
Можно открывть только 10, которые составляют одну страницу.
Нет смысла открывать 5000 файлов, но только 10, что довольно мало, согласись.
А вот по поводу поиска могу подкинуть ещё идейку
Нужно делать поиск в кешированных СТРАНИЦАХ, тогда будет всё великолепно.
Не знаю, но помоему в таком подходе будет всё намного лучше.
И главное темы будут выглядеть почеловечески, никто даже незаподозрит что форум на файлах. |
|
|
yura3d |
Отправлено: 30 августа 2009 — 17:34
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
bruno пишет:Можно открывть только 10, которые составляют одну страницу.
Нет смысла открывать 5000 файлов, но только 10, что довольно мало, согласись.
Вы почему-то ограничиваетесь всё время только просмотром темы, рассматривайте и другие варианты, например, удаление такой большой темы. Удалять 5000 файлов за один запуск скрипта явный перебор в плане нагрузки на сервер. Про индексацию поиска уже совсем молчу, придётся либо индексировать такую тему по частям, что не в лучшую сторону скажется на скорости индексации, либо индексировать полностью с открытием всех 5000 файлов
bruno пишет:А вот по поводу поиска могу подкинуть ещё идейку
Нужно делать поиск в кешированных СТРАНИЦАХ, тогда будет всё великолепно.
Скажите, а сколько лет Вы работаете с PHP на уровне программиста и какие у Вас есть готовые проекты? Просто закрадываются определённые сомнения. Скорость обработки файлов интерпретатором PHP приблизительно обратно пропорциональна квадрату их объёма (для нашего случая). Кешированные СТРАНИЦЫ будут занимать в любом случае объём больший, чем исходные текстовые данные, особенно заранее подготовленные для поисковой индексации (с вырезанием коротких слов, смайлов, бб-кодов, тегов и прочей лишней для поиска информации). Где же тут "будет всё великолепно"? Также не будет лишним отметить, что хранить кеш имеет смысл только для актуальных (посещаемых) тем, а не для всех подряд, ведь не имеет смысла увеличивать скорость открытия тем, которые редко просматриваются (если вообще просматриваются), т.к. объём занимаемого дискового пространства таким кешем может быть колоссальным (полный кеш всех тем - это же как минимум двукратное увеличение занимаемого пространства, и не забывайте, что кешем тоже нужно время от времени управлять - обновлять, чистить и т.п. - на это тоже затрачиваются ресурсы)
bruno пишет:Не знаю, но помоему в таком подходе будет всё намного лучше.
Проверяйте свои предложения, создайте небольшой скрипт, имитирующий простейший форум, и примените различные варианты хранения информации. Во время работы замеряйте время выполнения скрипта, нагрузку на ЦП, использование ОЗУ. Результаты измерений выкладывайте здесь. Я не пожалел времени и проверил подобные характеристики для различных методов обработки данных, в результате выбрал наиболее производительный и с наименьшими (как мне и многим другим пользователям ExBB кажется) последствиями для функциональности форума. А так, не приводя никаких технических аргументов в пользу того или иного метода хранения данных ("по-моему", "а вдруг", "мне кажется", "не знаю почему" и т.п.) - всё это не более чем слова
bruno пишет:И главное темы будут выглядеть почеловечески, никто даже незаподозрит что форум на файлах.
Пусть здесь отпишутся те, кто считает, что темы выглядят не по-человечески. Смысл фразы "никто даже незаподозрит что форум на файлах" мне вообще не понятен. Я не вижу никакой разницы между форумом на БД и форумом на файлах, за исключением метода хранения данных. Есть определённые ограничения, накладываемые различными методами хранения данных, но они есть как в случае с файлами, так и в случае с СУБД. И Ваша задача состоит в том, чтобы взвесить все плюсы и минусы и выбрать то, что наиболее подходит Вам |
|
|
Umbr |
Отправлено: 20 сентября 2009 — 10:51
|
Full Member
Покинул форум
Сообщений всего: 208
Дата рег-ции: Июнь 2009
Откуда: СССР
Репутация: 6
|
Про меня никаких сомнений нет, я ламер.
Искал через поиск, не нашёл.
Версия форума, такая же как тут. Не могу сделать так что бы картинка отображалась в теме. Фотография какая-нибудь или просто картинка. Сделал всё что мог - появилась строка в сообщении "Скачать файл".
Можно ли, что бы картинку помещать в посте? В прошлой версии с этим у меня проблем не было : ) а, тут, что-то не дойду никак.
Извините ...
ps. везде всё разрешил, размер загружаемого файла 40кБ поставил. в темах разрешил.
Извините, ещё раз ...
Попробую тут ...
(Добавление)
.. вот, тут у вас хорошо ... : ) Смотрю админку, не найду никак, где что подправить.
(Добавление)
Всё, я нашёл, извините ... Это в "Безопасность" надо было указать типы расширения файлов для загрузке. Не кидайтесь в меня.
Извините ...(Отредактировано автором: 20 сентября 2009 — 10:54) |
|
|
|