Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно фиксировать длительность сессии? 
:(
    Опции темы
Innuendo108
Дата 5.5.2011, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



Необходимо вести логин сессий (когда, кто и как долго).
С "когда" и "кто" сложностей - нет, а вот "как долго"? Как реализовать. Необходимо выявлять время удаления сессии (ну и тогда отнимаем время начала сессии и всё) 

Но как отслеживать время окончания сессии?

Ведь пользователь может:
1) Просто закрыть браузер
2) Выйти из сайта через "Выход"
3) Оставить компьютер включенным, и session timeout выбьет его

Как отслеживать длительность сессии в первом случае? Нужно использовать какой-нибудь локальный скрипт (к примеру jQuery .unload() метод) и отправлять запрос серверу, что сессия кончается?
Но ведь unload сработает на одной вкладке, а если у пользователя в другой вкладе то же открыт этот сайт? То как быть?

И как в третьем случае отслеживать? Необходимо знать что сессия уничтожилась сама, по timeout'у.

Заранее спасибо за ответы.
PM MAIL   Вверх
ksnk
Дата 5.5.2011, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Простейший рабочий алгоритм 
-- заводим отдельную таблицу в базе для мониторинга активности юзеров. (SESSION_ID,USER, START_TIME, FINISH_TIME) Отдельная таблица, imho,  окажется значительно полезней переписывания механизма хранения сессий в базе данных.

-- началом посещения считаем время открытия сессии/ Привязываем к этому событию строчку таблицы.
-- каждое телодвижение пользователя обновляет поле (FINISH_TIME=time()+10минут)  строчки таблицы.
-- временем выхода юзера будем считать время FINISH_TIME.
-- Если пользователь выходит сознательно нажимая на кнопку Выход - записываем точное время выхода.




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Noviy
Дата 5.5.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Можете попробовать воспользоваться comet и апдейтить даблицу, которую описал ksnk. Должно быть немного точнее. 
PM MAIL ICQ   Вверх
Innuendo108
Дата 5.5.2011, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



ksnk, 
А 10 минут добавляется с учетом того, что пользователь на последнее действие может затратить примерно 10 минут?

Т.е. получается при session timeout = 30 мин, мы получаем максимальную погрешность = 20 минут? Не так ух и плохо)

Алгоритм понятен, спасибо.

PM MAIL   Вверх
ksnk
Дата 5.5.2011, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Innuendo108 @  5.5.2011,  18:06 Найти цитируемый пост)
А 10 минут добавляется с учетом того, что пользователь на последнее действие может затратить примерно 10 минут?

У меня session timeout = 10 минут. Так получается оценка сверху, которую несколько приятнее показывать клиентам  smile, и в то-же время она не откровенно лажает.
Хотя, наверное, при длительных сессиях и наличии смысла в этой статистике - разумно делить это время пополам, за ради уменьшения погрешности.

Для большей точности можно периодически (по таймауту) скриптом посылать ajax запрос на сервер. Видимо это имел ввиду Noviy, под словом commet. Тогда можно рассчитывать на более точный мониторинг + отсеивание роботов и лузеров с мобилками без JS. Время реакции все равно лучше выбирать подлиннее, для уменьшения нагрузки. С другой стороны какая-то странная и необъяснимая активность на страничке, обычно вызывает резко отрицательную реакцию у посетителя, так что лучше этим заниматься там, где оно действительно нужно - в чат-приложении или игре. 



Это сообщение отредактировал(а) ksnk - 5.5.2011, 18:39


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Innuendo108
Дата 6.5.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



Ну т.е. можно вообще погрешность свести до 1 минуты, если поставить ajax скрипт с отправлением каждую минуту. Но думаю такая нагрузка на базу не стоит этого)
PM MAIL   Вверх
Reptor
Дата 6.5.2011, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Цитата(Innuendo108 @  6.5.2011,  15:08 Найти цитируемый пост)
Ну т.е. можно вообще погрешность свести до 1 минуты, если поставить ajax скрипт с отправлением каждую минуту. Но думаю такая нагрузка на базу не стоит этого) 


Замените в етом случаи SQL на NoSQL.. например Redis..  и используяте ключ => зна4ение для хранениха юзера и его времени и никакои нагрузки на бд не будет.. а если такая нагрузка то наверняка много юзеров .. можно даже на другои сервер положить ету логику..с тем же Redis или MongoDB.  Проблемы нагрузки решаемы
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.