|
|
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Мой вопрос наверно покажется глупым) При изучении сервлетов я читал что при обработке запроса doGET скажем, внутри метода надо создавать новый экземпляр DAO например myDAOImpl и работать с ним. Для этого чтобы не было запросов к одному объекту myDAOImpl из разных запросов/потоков. В примерах по Spring MVC обычно делают DI в следующем порядке: HibernateTemplate - DAOImpl - ServiceImpl -> Controller Как я понимаю по умолчанию(как показано в примерах) Spring создает синглетон бинов. Как в это случае не происходит проблем с конкурентным доступом? Ведь тогда во всех запросах будет использовать один и тот же экземпляр ServiceImpl, соответственно один и тот же DAOImpl и HibernateImpl. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 21:58 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Отличный вопрос! Ну, для начала попробуем понять, что же такое пул коннектов? Конкурентный доступ эт когда много потоком одновременно меняют состояние одного объекта, тут такого не происходит. Потоки получают данные из одного метода и все. При этом даже сессии у них различны(могут быть) и количество потоков ограничено размером пула. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 00:00 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Кароч проще открыть мануал и почитать теорию! И ваще, а почему тебя не интересует вопрос, что сервлет один а метод doGet дергает несколько потоков, аналогичная ведь ситуация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 00:04 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Допустим сервлет. Правильно: doGet () { MyDao dao = new MyDao(); dao.func(); } Неправильно: public class Servlet.... { private Mydao dao = new MyDao(); doGet () { dao.func() } } Для спринга: @Controller class .... { @Autowired Service service (или dao) @RequestMapping post() { service.func(); // service то для всех один будет, так? } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 00:46 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
new MyDao? - Это уже не Спринг. DI как бы для того и есть, чтобы передать контроллеру существующий, уже созданный ДАО. Аналогично и с сессией, и с зависимыми сервисами и контроллерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 02:36 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, посмотри внимательно) часть я написал для простых сервлетов, а часть для спринга. Там нет new(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 02:46 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdm, как я себе представляю на пальцах по вашему примеру: Controller наследник спрингового сервлета отвечает за потоки.приходят поток1 и поток 2 в контролер. контролер обращается к сервису сначала с вопросом на основании поток1, а потом поток 2 или наоборот. т.е. пока сервис занят одним потоком второй ждет. в спринге инжектящийся класс синглтон по дефолту, но если надо он может быть например прототипом (т.е. экземпляр создается на реквест\сессию\..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 08:44 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdmIDVsbruck, посмотри внимательно) часть я написал для простых сервлетов, а часть для спринга. Там нет new(). Сервисы и DAO должны быть stateless. Тогда проблем с многопоточностью не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 08:45 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdm во всех запросах будет использовать один и тот же экземпляр ServiceImpl экземпляр один, а выдает не обязательно одно и тоже, а то, что вы хотите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 08:49 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
LeonidvСервисы должны быть stateless. а если данные статичны? например: Сервис вертает карты справочники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 08:54 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
silvanт.е. пока сервис занят одним потоком второй ждет пример кода есть. что ...он ждёт...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 09:24 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Petro123, нет.предположение.вдруг какие статичные методы вызываем. коды у автора топика спросите) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 09:32 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
silvan, ну да. Надо аффтару привести более конкретный код с ПРОБЛЕМОЙ. imho в вопросе намешаны несколько вопросов. Потокобезопасные объекты\сингелетоны\DAO\Хибер. Каждый элемент можно написать потокоустойчивым и нет. Безотносительно DI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 09:57 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Афтор жжот! Пожалуйста почитай мануал? Ты сам не понимаешь, что пишешь. rdmПравильно: doGet () { Этот метод у кого? У сервлета. Сервлет то тоже синглтон! Подумай, почему работает то? Начни с азов, рановато тебе еще сервлеты и хибернеты всякие. Сервис один, а метод для каждого возвращает разные значения! НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ПОЧИТАТЬ МАНУАЛ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 10:59 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
silvanLeonidvСервисы должны быть stateless. например: Сервис вертает карты справочники. Раскройте пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 11:31 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Вот пример (с хабра) ссылка @Repository public class ContactDAOImpl implements ContactDAO { @Autowired private HibernateTemplate hibernateTemplate; public void addContact(Contact contact) { hibernateTemplate.save(contact); } } @Service public class ContactServiceImpl implements ContactService { @Autowired private ContactDAO contactDAO; @Transactional public void addContact(Contact contact) { contactDAO.addContact(contact); } } public class ContactController { @Autowired private ContactService contactService; @RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; } } Меня даже собственно не волнует вопрос почему это правильно, если это правильно и проблем с конкурентным доступом нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 11:46 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Другими словами, такую структуру можно использовать только как пример или она правильная? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 12:04 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Leonidv, а как обеспечить stateless? Спринг сам за этим следит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 12:05 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdmLeonidv, а как обеспечить stateless? Спринг сам за этим следит? Девелопер сам за этим следит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 12:11 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Bean factorу поддерживает два вида объектов: Синглтон: в данном случае создается один разделяемый экземпляр объекта с определенным именем, которое будет возвращено при поиске. Это применяемый по умолчанию и наиболее часто используемый режим, идеальный для сервисных stateless-объектов. Правильно? Я примерно такого ответа ждал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 12:20 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdmBlazkowicz, Bean factorу поддерживает два вида объектов: Синглтон: в данном случае создается один разделяемый экземпляр объекта с определенным именем, которое будет возвращено при поиске. Это применяемый по умолчанию и наиболее часто используемый режим, идеальный для сервисных stateless-объектов. Правильно? Я примерно такого ответа ждал) Лучше помнить, что scope больше, чем два http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html#beans-factory-scopes А так правильно. Делаем stateless (т.е. разным потокам просто нечего совместно использовать) или же делаем синхронизацию там, где это нужно (первый вариант сильно лучше). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:18 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdmBean factorу поддерживает два вида объектов: Синглтон: в данном случае создается один разделяемый экземпляр объекта с определенным именем, которое будет возвращено при поиске. Это применяемый по умолчанию и наиболее часто используемый режим, идеальный для сервисных stateless-объектов. Правильно? Я примерно такого ответа ждал) Spring Singleton, в отличие от Stateless Session Bean, не заводит никаких пулов, чтобы гарантировать отсутствие состояние между сессиями. А какой "второй" ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:22 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
И, да scope это не совсем "вид объекта". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:23 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я нагуглил статью 2004 года. Второй там был прототип. вот . Собственно не понял как синглтон без состояния может безопасно использоваться разными потоками, ну да ладно) главное работает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:26 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Leonidv, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:28 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdmBlazkowicz, я нагуглил статью 2004 года. Сайт хороший. Там про транзакции в Spring отличная статья. Но вам бы я рекомендовал reference читать по свежим версиям. Он на столько подробный сто статьи особо не нужны. rdmСобственно не понял как синглтон без состояния может безопасно использоваться разными потоками, ну да ладно) главное работает) Ответственность лежит на девелопере. Точно так же как у сервлетов. Поля лучше не использовать, без соответствующей синхронизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:30 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Ещё Flash Scope просили глобально добавить. Но вроде только в web сделали. https://jira.springsource.org/browse/SPR-6464 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:35 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, они ту статью с сайта ibm скопировали) Если вы эту имеете в виду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 13:38 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Petro123silvan, ну да. Надо аффтару привести более конкретный код с ПРОБЛЕМОЙ. imho в вопросе намешаны несколько вопросов. Потокобезопасные объекты\сингелетоны\DAO\Хибер. Каждый элемент можно написать потокоустойчивым и нет. Безотносительно DI. Хороший вопрос . Хочется для себя прочснить раз и навсегда как же все это работает в описаных вариантах Раскройте пожалуйста про потокобезопасные объекты/синглетоны /dao/хибер Верно чтов спринге у управляемого контейнером компонента вообще не должно быть в полях класса ссылок на объекты с изменяемым состоянием. Все такие объекты должны создаваться и использоваться как локальные переменные методов. Это действительно защищает от ошибок, но очень напоминает процедурное программирование. Тогда даже при моделе спринга с одним экземплярлм класса два потока одновременно исполяя один и тот же метод буду иметь каждый свой набор локальных переменных данного метода.Фактически это своя копия тела метода?! Это же верно и для метода с ключевым словом static !? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 10:58 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Atum1 Верно чтов спринге у управляемого контейнером компонента вообще не должно быть в полях класса ссылок на объекты с изменяемым состоянием. Нет, не верно. Сильно зависит от Scope. Так же надо понимать как именно состояние используется разными потоками, если речь о многопоточном сервере. Atum1 Все такие объекты должны создаваться и использоваться как локальные переменные методов. Какие "такие"? Atum1Это действительно защищает от ошибок, но очень напоминает процедурное программирование. Темы OOP и хранения состояния слабо связаны. Кажется что вы нащупали проблему Anemic Domain Model, но не можете её осознать. Постарайтесь обнаружить более точные критерии, что именно вас напрягает в коде. И сформулировать это конкретными терминами, а не "кажется", "похоже" и "возможно". Про Anemic Model первым начал писать Фаулер. Много интересного можно подчерпнуть и на rsdn.ru в форуме Архитектуры по этой теме. Atum1Тогда даже при моделе спринга с одним экземплярлм класса два потока одновременно исполяя один и тот же метод буду иметь каждый свой набор локальных переменных данного метода.Фактически это своя копия тела метода?! Ну, что значит "своя копия". Есть локальные переменные. Они хранятся на стэке. У каждого потока свой стэк. Atum1Это же верно и для метода с ключевым словом static !? Это всё немного паралельно вопросу static. Мысли все в верном направлении, но стоит ознакомиться с терминологией и более конкретно задавать вопросы. Anemic Model, coupling, cohesion это первое с чем бы я порекомендовал разобраться. После этого можно будет говорить уже более предметно. Ну, и можно было новую тему создавать, а не некропостить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 11:34 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Atum1, я бы ответил, что можно использовать один объект, если использующие его методы не изменяют его. Например в классе @Service можно использовать простое поле private String blabla если методы не будут его менять, а только читать. Присвоить ему значение можно в методе @PostConstruct. Например библиотеки логгирования, добавляется одно поле (private static final Logger log) на весь класс и используется всеми метода сервиса сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 12:40 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Atum1но очень напоминает процедурное программирование. смотри шире. Модель веб - публичный сервер-код для много-много клиентов. Для упрощения масштабирования и чтобы он не падал, вводится контейнер и много-много потоков. Значит куски кода должны быть слабосвязаны между собой. Что мы и наблюдаем - а ля процедурное программирование. Все связи между классами и временем жизни заменяют конфиги и DI. ..... В десктопе (клиент-сервере) совершенно всё наоборот т.к. нет предпосылки выше. Так что imho лучше знать оба метода кодирования). Т.е. синглтон не забывать))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 12:57 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Petro123 , Ничего не понял :-) Каким образом наличие контейнера и "многих потоков" может сделать так, что бы "он не падал"? К отказоустойчивости это вообще никакого отношения не имеет. И Спринг так же ни к отказоустойчивости, ни к масштабируемости не имеет ровно никакого отношения. Спринг - это просто удобный способ проставить зависимости между объектами. Так же, он никак не реламентирует, может ли у объекта быть состояние или нет. Хотите - делайте состояние. Не хотите - делайте stateless. Хотите - делайте синглтон, хотите - много инстансов. Спринг никак не подталкивает вас к тому или иному решению по дизайну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 13:27 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
cdtyjv, - "не падал" значит - сервер откликается на запросы. Это обеспечивает контейнер за счёт потоков. Логично? - я про отказоустойчивость не говорил. И про спринг не говорил. Я говорил про синглтон. Вы его давно писали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 13:36 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Petro123, Ок! тогда по порядку на простых примерах и так есть обычный такой servlet в него делаем @Injection private MyClass myClass; ( если просто создать private MyClass myClass = new MyClass() - то это будет .... что это будет ?! к примеру потоко незащищенный , разделяемый всеми тредами -> всеми пользователями некоторый ресурс ) - опять очень большая абстракция. Пусть MyClass Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. в сервлете в doGet() идет вызов методов doSomethingStatic и doSomething если в методах мы не используем значения полей класса MyClass - то при передаче параметра мы для каждого потока должны получить свое значение - ситуации когда один пользователь послал параметр а получил значение которое должен был получить второй пользователь - в такой ситуации невозможна ?! так ??? почему так ? потому что для каждого вызова - свой стек и свой набор переменных ?!. теперь добавляем в тело методом - операции с переменной класса counter ? и вот тут начинается .... что начинается? Как с этим бороться ? как этого избежать .... ( synchronized ? cas ? ) Это первая часть вопроса ... вторая будет уже по технологии и по спрингу - вот у нас есть Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. создали private SessionFactory sessionFactory; - каким образом он создается , он будет один ? что из себя будет представлять ? далее вопрос - как влияет на код @Transactional если ее не будет. а если мы будем вызывать процедуру то вопросы те же... про одновременный вызов двух пользователей. получит один из них мусор или нет. (мой ответ получит мусор , без аннотации , проверил )... почему пришел мусор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 17:41 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Atum1, Процедуру я имел ввиду вызов некой процедуры в базе данных call ? allCompany (?,?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 17:45 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Думаю секрет в ThreadLocal context ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 17:56 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
rdm, о спасибо, напомнили про ThreadLocal - насколько я помню - он нужен в тех случаях когда нужно чтобы у потока был свой экземпляр переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 18:18 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Atum1он нужен в тех случаях когда нужно чтобы у потока был свой экземпляр переменной это всегда нужно при работе с потоками. Так сказать обратная сторона медали наших замечательных потоков. (был тут топик на эту тему) Atum1(мой ответ получит мусор , без аннотации , проверил )... почему пришел мусор? где мусор? Приведи минимальный код с этим мусором. ЗЫ. Если говорить про объект сессии хибера, то он потокобезопасен. Уж так написан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2014, 21:37 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Atum1 , У вас как-то в кучу все смешалось :-) Хотите понять многопоточность - задавайте конкретные вопросы по многопоточности, поможем. Хотите понять сколько инстансов того или бина будет создано, что такое Transactional, и т.д. - документация вам в помощь. Почитали, попробовали, что-то поняли, что-то не поняли. Что не поняли - спросили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2014, 12:05 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Petro123- "не падал" значит - сервер откликается на запросы. Это обеспечивает контейнер за счёт потоков. Логично?Ни разу. То, что контейнер "прячет многопоточность" ни разу не мешает создавать кривой код. У нас был живой пример. Но NDA. Но был. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 17:19 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Если ты про руки программиста, то я не о них. Я о депрекатед однопоточной модели в сервлет 2.4 вроде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 17:38 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Petro123Если ты про руки программиста, то я не о нихА я - о них. Можно выдать на гора вполне работоспособный на стенде код, который вообще не пригоден к реальной жизни.Я о депрекатед однопоточной модели в сервлет 2.4 вроде.Ну была возможность декларативно аннулировать многопоточность. Потом подумали, что смысла - ноль и возможность отменили. И что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 17:48 |
|
||
|
Spring IoC, DAO и синглтон
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, а смотри ниже ...очень тонкий юмор: авторВ какой-то момент в Sun сочли такой подход неудачным. В самом деле, гораздо эффективнее отдать синхронизацию разработчику. Он во всяком случае знает, какие блоки действительно нужно синхронизировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 18:24 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2127751]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
196ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 579ms |

| 0 / 0 |
