Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
С ростом числа пользователей и усложнения системы раздачи прав я все больше склоняюсь к мысли, что права пользователей на объекты надо хранить в расчитанном виде. Ну или в предрасчитанном, если будет угодно. Попробую пояснить. Есть база пользователей. Скажем так, пока до 1000 , но уже больше 100. Есть объекты, типов которых с десяток. Есть права на объекты. Права разные для объектов разных типов, но прав до десятка на каждый тип объекта. Просто некоторые права для некоторых типов объектов (пока) не востребованы. До сих пор каждое обращение к объекту происходит через перерасчет прав пользователя на этот объект. Да! Оч важен факт, что сама система прав достаточно сложная, с возможностью делать исключения. Типа можно читать все каталоги диска кроме каталогов, начинающихся на 'S%' ну или в этом духе. То есть агрегация в правах УЖЕ присутствует. Система раздачи (и хранения розданных прав) по возможности упрощена в целях хоть как-то в этом безобразии разобраться. Естественно, ролевая модель, то есть есть роли, права даются им, а для пользователя права ролей суммируются. Вопрос не в этом, все это описание приведено только для понимания сути проиисходящего и носит сугубо приблизительный характер. Вопрос в том, а не хранить ли уже готовые права в отдельных таблицах? Точечные запросы, конечно, много не едят, но их очень много. И когда их очень много, то даже 16 ms на запрос уже чуствительно. Но как только мы начинаем хранить уже расчитанные права пользователей на объекты в виде Ид пользователя + Тип объекта + Ид объекта + Ид права + Состосние права (или в немного денормализованном виде, по таблице на объект, Ид объекта, Ид пользователя, Право1, Право2, Право3 и т.д.) так сразу возникает вопрос - а что с этим великолепием делать при изменении, пусть несущественном, прав? Пересчет, по предварительным прикидкам, стоит недешево. Более того, одномоментный пересчет прав для всех пользователей для всех объектов стоит ОЧЕНЬ дорого! Из-за того, что при миллионе объектов и 1000 пользователей и 10 правах это будет... Ага! Именно столько! А объектов больше! Конечно, далеко не все пользователи имеют права на все объекты. И степень перекрытия прав невелика. Но это не уменьшает проблему. Есть у кого-то опыт работы в этом направлении? Речь, естественно, может идти не о правах на объекты, а о любом сложнорасчитываемом, но постоянновостребованном функционале. Спасибо, если дочитали :) P.S.Сейчас способ расчета и хранения + набор флагов актуальности применяется частично и на небольшом наборе прав для пользователя (менее 10% объектов доступно) оправдывает себя - цена перерасчета относительно невелика, а сам перерасчет делается только по одному пользователю по факту обращения пользователя за информацией. Если инфа на момент обращения актуальна, то запрос выполняется сразу. Если неактуальна, то пользователь ждет, пока для него актуализируется инфа по доступу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 14:44 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> Права разные для объектов разных типов, но прав до десятка на каждый тип > объекта. Поясните, пожалуйста, для какой цели? > Вопрос в том, а не хранить ли уже готовые права в отдельных таблицах? Если я правильно разобрался в написанном, member Crimean, то предложил бы такое решение: используйте стандартную схему security (т. е., ограничение доступа на уровне бд, объектов бд и интерфейса). Причем, ограничение доступа к объектам бд можно сделать комбинированным (т. е., используя ACL, что Вы и предлагаете, но держать в ACL только исключения, - таблица будет небольшой), если объекты бд у Вас описаны достаточно полно в самой бд. Унифицируйте права. Вынесите избыточную часть в интерфейсные ограничения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 15:20 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Вопрос был - считать или хранить. По мере усложнения (больше логики) и утяжеления (больше пользователей) системы доступа. Если хранить, то когда и как пересчитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 16:15 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Поскольку права предоставляются каким-либо ответственным лицом (админом), то можно хранить готовые права отдельно (ИМХО). Админ может подождать или заняться чем другим. Например - выпить рюмочку кофе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 17:06 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> Вопрос был - считать или хранить. Неправильно заданный вопрос. В любом случае признаки сущности (коллекции, объекта, элемента, атрибута или как там у Вас сделано) где-то хранятся. И в любом случае они сравниваются с правами пользователя. Вам нужно радикально менять и и схему хранения признаков, и схему сравнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 17:39 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Конечно извините за флуд, но раз у нас в гостях guest_xxxx, то некий анализ его участия в форумах предполагает, что у всех неправильно и все надо менять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 17:59 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Права на изменение/удаление/добавление - элементарно решаются при помощи триггеров before ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 18:20 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> что у всех неправильно и все надо менять. Хм... guest Vredina, дружище, скажите честно, Вам нравится решение, которое предложил member Crimean? По существу есть что возразить? Что обсуждаем? Мою скромную персону или все-таки ограничение доступа? Если мою персону, - буду грубить. Невзирая на лица. Если ограничение доступа - пожалуйста, имейте уважение к оппонентам и выражайте свои мысли более содержательно. Если их есть, конечно. По существу: в рунете видел пару-тройку статей по ограничению доступа в dbms, - ни одна из них не удовлетворила. Механизм ограничения доступа используется, например, операционными системами, в одних - на основе ACL, в других - на основе идиом владельцев и прав (пусть будет rwe, не помню, как он в оригинале называется). Более гибким видится комбинированный подход, который достаточно просто реализуется в реляционной dbms. Естественно, имеет право на жизнь реализация любого - ACL или rwe - механизма отдельно. У каждого есть свои минусы. Скомбинировав эти два метода, можно дополнить их парой примитивов и получить нормальное решение промышленного качества. > Права на изменение/удаление/добавление - элементарно решаются при помощи триггеров before Если набор прав больше, чем изменение/удаление/добавление? Если dbms триггеры не поддерживает? Если нужны ограничения на уровне интерфейса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2004, 21:45 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
2 cremian А у Вас права только на элементы интерфейса или ещё на объекты СУБД средствами СУБД ? ИМХО , если хорошо налажены права на интерфейс, то можно не изощряться правами в СУБД , т.е. сделать их упрощенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 11:01 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Еще раз. Система раздачи / хранения / ... прав не обсуждается. Не в ней дело. В любой системе наступит время, когда пользователей станет очень много. Если пользователей много, то расчет списка доступных объектов для каждого пользователя станет недопустимо накладным. Например, 1000 объектов (фигня, правда ведь!) для 10 пользователей даст в худшем случае до 10 000 записей. А вот та же 1000 объектов для 1000 пользователей даст до 1000 000 записей. А если прав больше (порядка 10)? Уже чуствительно! А если объектов не 1000 , а миллионы?.. Пусть я упростил метод расчета доступности объекта. Но это все равно будет расчет. И в моменты массированного доступа у меня будет завал по производительности - все сожрет расчет доступов. Не думаю, что кто-то будет спорить с тем, что доступ к данным происходит на порядки чаще, чем изменение прав. Суть предложения сводилась к таки расчету списка доступных объектов, но вот когда это делать? А если делать это только для одного пользователя (в один момент времени) и только в момент доступа самого этого пользователя к данным и то только после изменения прав этого пользователя? А все изменения прав и добавления объектов просто должны инвалидировать признак актуальности прав пользователей, кого это коснулось или всех - это уже дело десятое. Важен принцип, который, вроде как, можно выстроить на соотношении числа обращений за данными и числа обращений за изменением прав. В итоге чем реже будут меняться права, тем больше будет выигрышь. А ждать будет не админ, меняя права, а пользователь, обращаясь к данным. И количество пользователей тут на время ожидания не влияет. Сейчас, конечно, мне скажут, что после глобального изменения прав как только все ломанутся за своими данными, так сразу все и подохнет. Ну да. Это есть. Это второй вопрос - что делать в таком случае :) Можно, конечно, запустить потихоньку систему считать права для тех, кто чаще доступается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 15:26 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> Если пользователей много, то расчет списка доступных объектов для каждого > пользователя станет недопустимо накладным. ACL - это не единственно возможный способ ограничения доступа. Вы вообще читаете то, что Вам пишут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 15:56 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Забавно, буквально только что закончил подобную задачу... Честно говоря, "волшебного решения" нет. У нас в системе (количество пользователей до сотни) система прав тоже достаточно развитая, тоже с возможностью исключений. Так вот. Права вначале расчитывались "на лету". Затем это стало сильно подтормаживать. Решили хранить их расчитанными. Быстро выяснилось, что да, скорость возрасла (естественно), но вот написание триггеров (у нас так), которые рулили генерацией прав, и их тестирование - та еще задача. Но это дело такое, один раз написал и все. Таблица прав выросла до чудовищных размеров, появились те проблемы, о которых вы написали (а именно стоимость раздачи прав). В результате напряглись умом и переделали сам принцип раздачи прав и вернулись к первому состоянию "расчет на лету". Пока устраивает. Но думается мне, что через какое-то время придется часть расчетов прав хранить. Но не полностью расчитанные, а именно "в предрасчитанном" виде. Так что мой совет такой. Как всегда, истина посередине. Т.е. в качестве компромисса хранить предрасчитанные права. Если это возможно конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 15:56 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
начнем с политики безопасности. Она может быть либо закрытой - либо открытой. Закрытая - запрещено все что не разрешено. Открытая - разрешено все что не запрещено. У каждого объекта есть создатель объекта (хозяин) + Каждый объект можно назначить в группу. А в эту же группу может входить лицо, права которого мы должны определить. (Не забываем про суперпользователя) Ну отсюда и пляшите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 15:57 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
CrimeanСпасибо, если дочитали :) Есть еще один вариант - рассчитывать права при старте сессии. Так убиваются два зайца: во-первых, снимается нагрузка, а во-вторых, обеспечивается модель "сессия идет с начала до конца при единых правах" - что можно со всеми основаниями назвать фичой, а не багой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 16:00 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Вообще, что-то я не точно понял, как применяются права сейчас :) Но может - если так и так долго - заранее рассчитывать то, что потом долго, и оставлять нерассчитанным то, чего потом быстро, или чего вообще нельзя рассчитать. У нас вот нет прав на конкретные строки, объекты среди списка таких же. поэтому проще все: права на выполнение действий конкретно в БД - т.е. прва на запуск ХП. И права на интерфейсные объекты. Естественно права в БД грантуются после их изменения. Ну а права на интерфейс рассчитываются при запуске и при открытии конкретной формы. Как бы делали, если бы нужны были права на доступ к конкретным объектам - фиг его знает. Пока не надо - не думал. -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 16:04 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
неплохой вариант - при старте сессии заполнять временные таблицы. при этом можно получить разную "мощность". Например, в табло's при старте заносятся реестрыы "узлов" (группы объектов). Или полные (конечные) списки объектов. Такие табло's можно иметь много. Или всего одно. В общем случае - система может сама разбираться - что ей "подсунули" - группы объектов или ALL. например, я так и поступил - при старте парсится дерево описания всех прав на все и про все (в своей части). Результат - в табло. Там все видно, что юзер ....обладает списками ...ролей, армов, бизнес-функций... и + конечные списки групп объектов_разделения_доступа_уровня_строки_БД (например, группы клиентов, товаров...) Далее следует гибрид Закрытой/открытой политики. Например, в приложении - можно сразу предусмотреть популярную комбинацию - на уровне его кода. Например - в интерфейсах (когда видимость любого айтема можно изменить через его описание...) - можно сразу , успешно закодировать дефолтную... понятно, что для разных "мощностей" уместна своя стратегия. истина лежит где то по-середине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 16:34 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Еще забыл написать. Большой проблемой при хранении расчитанных прав является также и раздача прав не только при добавлении нового пользователя или перемещении его между группами (это в конце концов происходит не так уж часто), но и при добавлении объекта или какой-либо операции с объектов в результате которой с правами надо что-то сделать. Вот это действительно печально, потому что а) дорого б) происходит часто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 16:35 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> неплохой вариант - при старте сессии заполнять временные таблицы. при этом > можно получить разную "мощность" Уважаемый дон не в Датаарте часом работал? - почерк похож. 2all: это сбор любителей геморроя? Возьмите любую нормальную операционную систему - там есть ограничение доступа? А геморрой с правами? А где там расчеты? Где "до десятка прав"? Н-да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 17:23 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
вообще - самая геморройная часть прав - это права на селект. На insert/update/delete как-то попроще... а вот на селект, когда кто-то должен видеть лишь часть таблицы.. или часть полей.. - это да... тяжко. На все случаи жизни вьюшек не насоздаешь. Да и если применять USER во вьюшках... хм.. не всегда все так тривиально выглядит как хотелось бы. Везде своя изюминка, в каждой системе. Лично я для таких систем никогда не использовал GRANT. Хотя DB2 - это уже отдельная история... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 17:41 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Речь не только о правах на SELECT, хотя и о них тоже. Насчет операционной системы господин guest_20040621 лукавит. В операционках нет раздачи прав на файлы, содержащие слово "вася" с 5 по 10 позицию... А у нас - есть :( Ну и мне сложно себе представить операциоку с парой десятков миллионов файлов в одном (!) каталоге со сложной нарезкой прав на них при наличии 1000+ конкурентных пользователей, щарящих в этом каталоге. При этом регулярно требуется перерезать права... Насчет компромиссов - да, есть три категории пользователей. Для одной установлен признак "суперпользователь" и все доступно без проверок / расчетов. Для второй категории права считаются при каждом доступе. Для третьей категории формируется что-то типа того же ACL. При добавлении нового объекта он прописывается всем пользователям, кому доступен и для кого доступ актуален. При измении прав сбрасывается флаг актуальности для тех пользователей, для которых права хранятся и для которых списки доступа все еще актуальны... Но это все для объектов, которые "редко" добавляются. Для объектов, которые часто добавляются права только считаются... Ну и поскольку объекты часто добавляются, то для них ничего (в смысле прав) не хранится... Но считать чем дальше, тем накладнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 18:40 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> вообще - самая геморройная часть прав - это права на селект. На > insert/update/delete как-то попроще... а вот на селект, когда кто-то должен > видеть лишь часть таблицы.. или часть полей.. - это да... тяжко. Эта задача имеет абсолютно беспроблемное решение. И не одно. > Насчет операционной системы господин guest_20040621 лукавит. Да ну? Очень интересно. Где именно? > В операционках нет раздачи прав на файлы, содержащие слово "вася" с 5 по 10 > позицию... А у нас - есть :( Любой системный администратор напишет такой скрипт за пару минут и будет автоматом запускать его с нужной периодичностью. Хотя даже теоретически не могу себе представить ситуацию, когда это было бы нужно. В принципе. Кто сие чудо проектировал? Можно взглянуть на исходное задание? > Ну и мне сложно себе представить операциоку с парой десятков миллионов > файлов в одном (!) каталоге со сложной нарезкой прав на них при наличии 1000+ > конкурентных пользователей, щарящих в этом каталоге. Да какая разница, сколько файлов, - лишь бы ОС такое количество поддерживала. Откуда требование одного каталога? Какие сложные права? Откуда они взялись? > При этом регулярно требуется перерезать права... Что значит "перерезать"? Х. з., это я тупой или Вы набором букв разговариваете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2004, 19:27 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
И сколько будет работать такой скрипт на лимоне файлов и тыще юзеров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2004, 20:24 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> И сколько будет работать такой скрипт на лимоне файлов и тыще юзеров? Понятия не имею. Пишите, запускайте, считайте, если интересно. Вопрос был в том, что это возможно, а не в том, что это рабочее решение. Похоже, конструктива от Вас не добиться. Хм... жаль. С другой стороны - каждый сам себе злобный буратино. Вот что меня всегда жутко расстраивает - так это когда кривизну собственных решений тщательно маскируют. Проблема не в Вашем проекте, member Crimean (ну, сделали и сделали, работает - и очень хорошо, не надо его трогать, проще пару серверов докупить, если притормаживает (дешевле, чем переписывать и оптимизировать)), а в том, что прочтет это обсуждение разработчик (а еще хуже - студент) и решит: "Вау, если так сделано продакшн приложение, и я так же сделаю". Тиражирование ошибок гораздо хуже самих ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2004, 20:59 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
Проблема, скорее всего, в том, что у объекта есть несколько ключевых реквизитов и права необходимо раздавать в разрезе всех этих реквизитов. Или, другими словами, объект типизован несколькими классификаторами. Права пользователям на объект могут быть назначены в разрезе любого или в разрезе нескольких классификаторов. Это, возможно, неправильно, но так надо заказчику. И что с этим делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2004, 12:09 |
|
||
|
Решение проблемы разделения доступа. Расчет в реалтайме или отложеный?
|
|||
|---|---|---|---|
|
#18+
> Проблема, скорее всего, в том, что у объекта есть несколько ключевых > реквизитов и права необходимо раздавать в разрезе всех этих реквизитов. Imho разумный подход. Вы говорили, что сейчас используется суммирование? - т. е., если я правильно понял, каждый атрибут имеет маску прав и результирующие права - "логическое или" (или какая у Вас политика?) прав каждого атрибута. Т. е., как регистрировать права вроде понятно. Imho все-таки правильнее права формализовать, т. е., использовать их одинаковый набор для любого объекта; возможно, для части объектов их полный набор не будет иметь смысла, но если приложение может различать типы объектов, это не так важно. С изменениями прав: по-видимому, пересматривать нужно права тех объектов, атрибуты которых изменились? Хуже, если при этом нужно менять права всех связанных объектов: придется описывать объекты базы данных, связи и строить для них зависимости изменений. Если есть понятия процессов, маркируем измененный объект и указываем идентификатор зависимости. Вариант уменьшения нагрузки на приложение: разделите понятия "тип доступа" и "права доступа". Если не всем пользователям нужен режим изменений, заведите маркер (или, если режимов доступа планируется несколько, - таблицу) и проверяйте права только если флаг установлен (или выбрано определенное значение). Права объекта (как признак объекта) можно (imho и нужно) хранить в явном виде, - быстрее. Не все очевидно со сложными объектами: для корректной установки прав (или изменения) потребуются дополнительные проверки. Информацию о владельцах объектов можно (imho и нужно) хранить в явном виде. Множественный доступ может быть организован либо группировкой владельцев (группы, роли или и то и другое) и хранением идентификатора в явном виде опять же как признака объекта, либо наследованием (сложнее проверять, неочевидна логика, но компактнее хранить). Группы предпочтительнее для дополнения политики доступа возможностью оперировать объектами только своей группы. Изменения журналируются. ACL можно использовать для хранения исключений. > Или, другими словами, объект типизован несколькими классификаторами. Не в тему: классификаторы как организованы (разнесены на логическом или физическом уровне)? P.S. Основная проблема в том, что накладно хранить достаточно большое количество дополнительных признаков объектов, но при текущей стоимости HDD и памяти - как-то и говорить об этом не хочется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2004, 14:18 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32739166&tid=1546220]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
96ms |
get tp. blocked users: |
2ms |
| others: | 260ms |
| total: | 551ms |

| 0 / 0 |
