Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Подскажите как грамотно обработать таймаут сессии. Приложение довольно навороченное на фреймах, с использованием MVC. После долгого простоя отправляю постбэк, а код лезет за переменной сессии и естественно её там уже нет. Вобщем интересует больше стратегия "как это делается", чем строчки кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 16:09 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Если я Вас правильно понял, то Вам нужен параметр файла web.config Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 20:49 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Незнаю, на сколько это верно, но, умные головы говорят - если тайм-ут сессии, предположим 20 мин - то можно вызывать рефреш страницы каждые 10 мин - сессия будет жить вечно, пока насильно её не закончишь... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 21:30 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
vladgrigНезнаю, на сколько это верно, но, умные головы говорят - если тайм-ут сессии, предположим 20 мин - то можно вызывать рефреш страницы каждые 10 мин - сессия будет жить вечно, пока насильно её не закончишь... Целиком и всеобъемльюще согласен, поддерживаю. Однако, здесь, на мой взгляд, имеет смысл рассмотреть уже политику безопасности. ЗЫ да, кстате Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 22:37 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Просто ЛосьЕсли я Вас правильно понял, то Вам нужен параметр файла web.config Нет. У приложения уйма форм, мне что в каждый обработчик Load вставлять код проверки истечения сессии и перебрасывать клиента на стандартную страничку с отображением диалога мол сессия истекла требуется повторить вход. Либо наследовать класс от Page, там определить необходимую логику и наследовать все страницы от него. Как правильно, как умные люди делают? Потдерживать сессию не нужно иначе смысл от неё? Сервер должен освободить ресурсы, если клиент сорвался с места и пошёл с девушкой в ресторан... Ребят, код рисовать не надо, мне словами, как это делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2005, 23:49 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Orion, а как Вы себе это представляете? Cессия либо есть, либо ее нет. У сессии есть timeout, либо он истек, и сессии нет, либо он не истек, и сессия есть. Возможно также мы не поняли друг друга. Попробуйте в Global.asax.vb описать событие Session_End, возможно Вам нужно это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 00:05 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Допустим, я сессию закрыл по событию, дальше... Пользователь пришёл со свидания и жмёт кнопарь на форме, генерируется постбэк... Внутри страницы код лезет в ((MyClass)Session["ключ"]).MyFunc(); Опа... пустая ссылка на объект - исключение. Результат - пользователь имеет плохое мнение о приложении видя исключение вместо сообщение о том что он слишком долго гулял и сервер закрыл его сессию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 00:15 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
2Orion не понятно, какой эффект требуется получить что бы не было исключения, переменную сессии предварительно можно(вообщето нужно) проверять на null данные каждого пользователя можно кэшировать в базе, и при пустых переменных сессии восстанавливать из базы одним словом, вариантов может быть много, осталось выяснить - что конкретно необходимо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 00:58 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
<OFF> Необходимо как всегда: "интелект компа" -ты ему говоришь, что пошёл в ресторан (больше чем на тайм-аут сессии) - он отвечает - "угу" - и продолжает ждать, поддерживая сессию, пока ты не вернёшься из ресторана... P.S. Подождите лет 150 - получите интелектуальные машины ;) и, таких проблем не будет... </OFF> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 10:06 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
profil2Orion не понятно, какой эффект требуется получить что бы не было исключения, переменную сессии предварительно можно(вообщето нужно) проверять на null Наверное я плохо объясняю. Либо есть решение до неприличия простое. Негоже на каждой странице вставлять один и тотже код. Я пока склоняюсь к написанию HttpModule для конвейера, чтобы ещё до страницы с формой отваживать юзера на прощальное сообщение. Но чувствую что что-то не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 10:28 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
2vladgrig Мне НЕ НАДО поддерживать сессию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 10:30 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
авторМне НЕ НАДО поддерживать сессию Тогда вообще непонятно в чём грабли - есть блок Try..Catch..End Try (VB.NET к примеру)... Вот и оберни все свои постбэки этими блоками - отлавливай ошибку о пустом значении в переменной сессии и отправляй на страницу авторизации или там на страницу об извещении о конце сессии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 10:43 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Ну вобщем пришли к тому, что есть 2 варианта: 1. ставим контроль состояния сессии где-то на этапах инициализации каждой страницы 2. Перехватываем запрос модулем ещё до того как он добрался до страницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 10:51 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
авторНу вобщем пришли к тому, что есть 2 варианта: 1. ставим контроль состояния сессии где-то на этапах инициализации каждой страницы 2. Перехватываем запрос модулем ещё до того как он добрался до страницы Нуу... Если Вы считаете, что это самое ГРАМОТНОЕ решение... Советую, кстати, где-то на этапах инициализации каждой страницы поставить проверку наличия соединения с SQL и ряда других непредвиденных ошибок... А то, выпрыгнет подобная ошибка - и, результат - пользователь имеет плохое мнение о приложении видя исключение сервера... Есть же специальные средства обработок ошибок, вот ими и надо обрабатывать - чего самим выписывать всё по новой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 13:56 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Here is my way to solve the problem. I have class Base page (clsBasePage). All pages in project inherit from clsBasePage. Where is not necessary to check anything on each page, it is enough to do it ones in clsBasePage but as each page inherits from clsBasePage. What is major idea. About timeout. According to many articles I've been reading 1.0 ver has bug in that timeout mechanism and I've decided do not use session timeout at all. One my page in main frameset has following screept: <script> setTimeout('document.location=document.location' ,300000); </script> The page will be reloaded ones per 3 min. I let user to make a decision when she/he is going to logout. Thanks, Vladimir ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 23:14 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
vladgrig Нуу... Если Вы считаете, что это самое ГРАМОТНОЕ решение... Советую, кстати, где-то на этапах инициализации каждой страницы поставить проверку наличия соединения с SQL и ряда других непредвиденных ошибок... Ну зачем так утрировать? У вас есть предложение лучше или вы просто так написали? vladgrigЕсть же специальные средства обработок ошибок Например, я знаю, что есть решения, я затем и создал этот топик, чтобы мне на них указали. Вот IAmSam тоже считает, что можно ещё наследовать от собственного класса страницы, я как-то и забыл включить это как третий способ. А чем вам не нравится второй вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 00:40 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
авторА чем вам не нравится второй вариант? Лучше Вы мне объясните, чем Вам не нравиться вариант Try Catch End Try? Рассейте мои заблуждения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 07:46 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
По моему скромному IMHO, если уж так заботится о положительном впечатлении юзера от приложения, то надо пересмотреть сам подход к кешировании данных в сессии. Что я имею в виду. Я предлагаю всю работу с данными, хранящимися внутри сессии, перенести в отдельный класс и работать только с ним (интерфейс можно сделать как и у Session). На событии Session_End сериализовать все данные, находящиеся там на текущий момент в постоянное хранилище (файлик, бд). Класс сделать singleton-ом, добывающим свой instance из текущей сессии и ложащий его туда в случае отсутствия (можно и просто Session_start обрабатывать). Внутри класса инкапсулировать всю логику проверки на наличие данных в сессии. При необходимости десериализовывать данные из постоянного хранилища. Предусмотреть различные стратегии сериализации-десериализации в зависимости от данных (к примеру, число можно и просто сохранить, а вот вместо датасета сохранить текст запроса к БД и получать его заново. Важные данные размещать в таблицах БД как часть основных данных приложения (та же самая корзина заказов из всех примеров :) )). В общем полный простор для полета фантазии :). И у юзера вообще не будет тогда проблем с протухшими сесиями. В любой (или почти в любой) момент времени он сможет продолжить работу с того места, где он остановился неделю назад. Как идея? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 08:20 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Вот и я про то - ладно было бы необходимо продолжать сессию по истечению тайм-аута - согласен, немного проблематично, но решаемо... Только автору нужно не это - а банальная обработка ошибки при отсутствии значения в переменной сессии с последующим редиректом на суперстраницу с уведомлением о том, что пользователь долго отсутствовал и его сессия закончилась - вот какая ОГРОМНАЯ проблема... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 08:55 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Артем1 , вопрос не в том, чтобы поддержать сессию в случае краха приложения или ещё какой непредвиденной ситуации, для такого случая есть стандартный сервис Session State Server. Всего-то в web.config указать Код: plaintext 1. 2. 3. 4. 5. c:\>net start aspnet_state И ничего писать не надо. Необходимо не это, а надо нормально завершить работу приложения в случае истечения сессии. Это нормальная практика и здесь не надо заботиться о карзине и т.п. просто надо сказать что сессия истекла и перенаправить юзера на страницу входа например. Вы же много раз это видели. 2vladgrig А кто говорил что проблема ОГРОМНАЯ ? Ищется грамотное и элегантное решение, а не геморой с обработкой исключений на каждой странице, а их десятки. P.S. Просьба не воспринимать всё, что я пишу как давление на личнось, мы здесь обсуждаем варианты решения задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 14:45 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Позвольте я снова влезу с Global.asax. Если не хотите создавать обработчик исключений для каждой страницы, можете использовать Application_Error в вышеуказанном файле, где по коду обрабатывать возникшее исключение. Проще, мне кажется, некуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 15:02 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Просто Лосьможете использовать Application_Error Хм, если удастся опознать исключение ... очень сложно. Есть идея, сейчас попробую, результат напишу ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 15:42 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
авторИщется грамотное и элегантное решение, а не геморой с обработкой исключений на каждой странице, а их десятки. да что вы зациклились на одной этой проблеме - да ещё и стараетесь найти для неё грамотное решение - подумайте о других исключениях которые могут выпрыгнуть, как будете с ними бороться - или вы конгениально соорудили ресурс, что проблема только в этом? Очень сомневаюсь... Бывают же ошибки - даже не зависящие от вас - и всё одно пользователь увидит окошко (если вы не сделаете своего ErrorPage) или не обработаете их подобающим образом. Так какой смысл заморачиваться на единице, когда решать надо для сотни (а для сотни есть стандартные средства о которых вам толкуют все участники топика). Кстати, ИМХО крутые вы программеры, если только после создания сотен страниц вспомнили об исключительных ситуациях и их обработке... авторПросьба не воспринимать всё, что я пишу как давление на личнось, мы здесь обсуждаем варианты решения задачи. Я надеюсь здесь все знают о том что идут дебаты а не ругань какая то... Так что и меня уж извините, если кого задеваю с пылу с жару... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 18:57 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
:) vladgrig да что вы зациклились на одной этой проблеме Один пишем, два в уме. Я пока пишу другие места, а это в голове крутится параллельно. vladgrig Бывают же ошибки - даже не зависящие от вас - и всё одно пользователь увидит окошко (если вы не сделаете своего ErrorPage) или не обработаете их подобающим образом. Да не в этом же дело. Да сделаю я свою страницу для ошибок. Это фигня. Я не могу нормально обработать завершение сессии. Ну не загорается у меня лампочка где лежать гениальные идеи ... :) vladgrig Кстати, ИМХО крутые вы программеры, если только после создания сотен страниц вспомнили об исключительных ситуациях и их обработке... Да хоть 1000. Пока проект не пущен в эксплуатацию, делаю что хочу. Я вообще во время разработки поймал таймаут сесси только 1 раз, когда чай пошёл пить. :) И вообще, вебморду с движком я один пишу, помочь мне не кому кроме интернета :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 19:15 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Вобщем фигня такая: (таймаут сессии выставил на 1 мин, глобально) 1. Старт сессии (SessionID = 1234567) записывается объект в сессию - SessionAppModel дальше всё работает в нём 2. Работа приложения Какая-то страница добавляет дочернюю модель в SessionAppModel.AddChild(myModel) и от запроса к запросу с ней работает 3. Открываю ту самую страницу 4. жду 1 мин вижу сработало Session_End, закрывается SessionID = 1234567 5. Теперь жму на странице кнопку, дальше интересно. 6. Срабатывает Session_Start и номер сессии тотже SessionID = 1234567 И естественно создается новый SessionAppModel без дочерних моделей Дальше ошибка когда страница пытается получить доступ к несуществующей дочерней модели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 20:19 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
наверное лучше один раз увидеть чем сто раз услышать Логин:public Пароль:public Тайм-аут 2 мин. P.S. сильно не критикуй - ибо ради функционала, а не забавы для... Кстати, рад выслушать замечания о граблях ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 21:15 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
vladgrig наверное лучше один раз увидеть чем сто раз услышать Логин:public Пароль:public Тайм-аут 2 мин. P.S. сильно не критикуй - ибо ради функционала, а не забавы для... Кстати, рад выслушать замечания о граблях ;) Ты думаешь, что я как-то смогу попасть на твой localhost ? У меня уже голова кругом в ASP.NET Community Starter Kit ASP.NET Portal Вообще сессию не пасут, в Community Starter Kit только в одном месте Session[""] используется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 21:31 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 21:42 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
авторУ меня уже голова кругом в ASP.NET Community Starter Kit ASP.NET Portal Вообще сессию не пасут, в Community Starter Kit только в одном месте Session[""] используется я думаю всё это происходит потому что все эти люди читают литературу... Учебный курс MCAD/MSCD Сертификационный экзамен 70-305 и 70-315 (Разработка Web-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET Официальное пособие Microsoft для самостоятельной подготовки Москва, 2003 стр.114-115) Упорядочение доступа к переменным состояния Переменные состояния Application и Session — мощное и потому опасное средство. Если использовать их бессистемно, проще простого наделать ошибок в коде, как часто бывало в старом Basic. ...... ...... Во избежание подобных проблем следует упорядочивать доступ к переменным состояния Application и Session. Проще всего сделать это следующим образом. Для каждого необходимого элемента данных объявляются переменные на уровне страницы, затем при исполнении обработчика события Page_Load в них записываются значения переменных состояния Application и Session, а при исполнении обработчика события Page_UnIoad значения переменных, объявленных на уровне страницы, возвращаются в переменные состояния. Упорядоченное чтение и запись переменных состояния — полезный прием программирования, который рекомендуется взять на вооружение. Следующий код иллюстрирует упорядоченный доступ к переменным состояния: Visual Basic .NET Public Class WebForrnl ' Объявить переменную на уровне страницы. Dim strUname As String Private Sub Page__Load(ByVal sender As System.Object.ByVal e As System.EventArgs) Handles MyBase.Load 'Получить значение переменной состояния. strUname = Application("Uname") 'Присвоить значение. strUname = "Wombat" Использовать переменную. Response.Write(mstrUname) End Sub Private Sub Page__Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Unload 'Вернуть значение в переменную состояния Application("Uname")=strUname End Class ... ... Внимание! В случае Visual C#, прежде чем вызывать любые методы переменной состояния, например ToString, обязательно убедитесь, что ее значение отлично от null, иначе вы получите ошибку времени выполнения из-за пустой переменной состояния. Отключение переменных состояния Session По умолчанию AS P. NET поддерживает переменную состояния Session для каждой страницы приложения. Если странице не нужна сеансовая переменная состояния, то для повышения производительности ее можно отключить. Чтобы отключить переменную состояния Session для одной Web-формы: • вызовите окно Web Form Properties для формы и установите EnableSession State как False. Чтобы отключить переменные состояния Session во всем приложении: • в файле Web.config установите для тега <sesstonstate mode> значение off: <sessionstate mode="off"> P.S. От себя добавлю, что при таком методе наверное не так сложно в LoadPage отследить наличие переменных сессии или их отсутствие (даже на каждой странице ;) ) и, соответственно обработать происходящее надлежащим образом... Желаю удачи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 22:24 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Ничего нового в вышесказанном нет, чтобы самому до этого дойти ума много не надо. Остановим пока дебаты, пока я сам не сделаю то, что имел ввиду. Напишу потом здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 16:30 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Не совсем понял что я должен был увидеть в вашем примере. Но танцующий котик под музыку - прикольно, только тяжеловато 100к для странички. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 16:45 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
На самом деле, (лично мне) всё ясно... Вы всё умеете и всё уже знаете... И книги для вас не авторитет, и мнения так себе... Непонятно одно, - к чему тогда вообще весь этот фарс с вопросами о грамотной обработке!!!!???? P.S. Про тяжесть котика - на скорость трафика не жалуемся - потому и жируем... ;) А насчёт того что должен был увидеть - так я так скажу - каждый видит то, что хочет - там и обработка сессии была (в натуральном виде), и книги умные для вас лежали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 17:44 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
vladgrigНа самом деле, (лично мне) всё ясно... Вы всё умеете и всё уже знаете... И книги для вас не авторитет, и мнения так себе... Ничего вам не понятно :) vladgrigНепонятно одно, - к чему тогда вообще весь этот фарс с вопросами о грамотной обработке!!!!???? Наберитесь терпения. vladgrigтам и обработка сессии была (в натуральном виде), и книги умные для вас лежали... Я мало что там смог разглядеть, у меня котик еле загрузился. Связь у меня не ахти, наш МТС в этом плане - отстой. Так что я не понял, толи ваш сайт глючил, толи МТС, я склоняюсь ко второму, но дальше второго экрана мне сдвинуться не удалось. А отсутствием литературы слава богу я не страдаю, спасибо. Давайте действительно прекратим этот никому ненужный "фарс", офтопики никому не интересно читать ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 18:12 |
|
||
|
Грамотная обработка таймаута сессии
|
|||
|---|---|---|---|
|
#18+
Вобщем решение проблемы сводится к написанию всего одного Http модуля: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Ещё надо не забыть этот модуль прописать в Web.config 1. FormsAuthentication.SignOut(); в принципе можно не делать. 2. Если приложение на фреймах, то на странице установки набора фреймов следует добавить JavaScript вида: Код: plaintext 1. 2. 3. 4. 5. 6. 3. Надо удалить все закэшированные данные на событие Session_End. Работает на ура! :) Просто, элегантно и без лишнего гемороя ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 22:37 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1393691]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 395ms |

| 0 / 0 |
