[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Список ативных пользователей
Basili4
При регистрации добавляется запись в таблицу активных пользователей при нажатии кнопки выход она удаляется но если закрыть браузер или окно то запись соответсвенно не удаляется

а мне нужно знать кто находится на сайте. Все осложняется тем что пользователь долгое время может не взаимодействовать со страницей. где в порядке получаса - часа.

суть вопроса такова как узнать что пользователь еще активен ???



Спустя 6 минут, 37 секунд (16.07.2010 - 10:24) silius написал(а):
активность сессии, помоему:
keepalive()
, но точно не помню

Спустя 2 минуты, 24 секунды (16.07.2010 - 10:26) Basili4 написал(а):
Пои вилась идея запустить по таймеру функцию которая в таблицу с акиивными пользователями будет писать текущую дату время и поставить событие которое будет какждых 2 минуты проверять эту даду время если они не ходят в интервал текущее время -2 минут значит запись пользюка бить. Я хотел бы спросить мнения об этом способе

Спустя 4 минуты, 46 секунд (16.07.2010 - 10:31) Nikitian написал(а):
Храните время последнего посещения авторизованным пользователем. Если был давно, то соответственно неактивный.

Спустя 3 минуты, 25 секунд (16.07.2010 - 10:35) Wird_34 написал(а):
Активность разве не через сессии проверяется? Сессия не разорвана - активен, наоборот неактивен. По умолчания время жизни сессии - 24 минуты.

Спустя 2 минуты, 11 секунд (16.07.2010 - 10:37) Basili4 написал(а):
Wird_34
Как проверить активность сессии ??

Спустя 10 минут, 5 секунд (16.07.2010 - 10:47) silius написал(а):
Basili4, посмотри, помоему тут что то есть

Спустя 16 минут, 37 секунд (16.07.2010 - 11:04) Basili4 написал(а):
silius
Три раза перечитал ниче не могу понять.

Есть индификаторы сессий в базе как мне узнать когда какая то сессия разрывается ????

Спустя 9 минут, 32 секунды (16.07.2010 - 11:13) Wird_34 написал(а):
Никак, сессия существует отдельно для каждого пользователя и к сожалению доступа к сессиям других пользователей нет. Прости, что-то сам не разобравшись стал советовать... Надо в базу данных таблицу иметь с полями id пользователя и время последней активности, если разница времени последней активности и текущего времени больше определенного значения значит удалить запись из таблицы и пользователя считать неактивным. А тех кто там есть считать активными.

Спустя 1 час, 51 минута, 50 секунд (16.07.2010 - 13:05) Basili4 написал(а):
Wird_34
я так и предполагал сделать но возникает вопрос как определить активность пользователя если он не взаимодействует со страницей. У меня вот такая ситуация загружается страница которая получает сообщения от различных систем пользователь только их принимает и реагирует при их возникновении вот меня и встала запдача оповещать только активных пользователей так как по результату их совместных ответов изготовляется флаг в таблице о обработке события.

Спустя 1 час, 21 минута, 17 секунд (16.07.2010 - 14:26) Wird_34 написал(а):
Цитата (Basili4 @ 16.07.2010 - 10:05)
я так и предполагал сделать но возникает вопрос как определить активность пользователя если он не взаимодействует со страницей.

Т. к. понял только это, то на это и отвечу. Удалить запись из таблицы об активности пользователя можно при обращении другого пользователя к странице. Т. е. проверка все ли пользователи являются активными на данный момент будет осуществляться каждый раз при загрузке страницы.

Спустя 21 минута, 53 секунды (16.07.2010 - 14:48) Ice написал(а):
Цитата (Basili4 @ 16.07.2010 - 14:05)
как определить активность пользователя если он не взаимодействует со страницей.

Какая версия мускула? В новых версиях появилась такая штука как событие. Как я понял, - это что-то наподобие крона, то есть база сама запускает его через определенный промежуток времени.

Спустя 4 минуты, 37 секунд (16.07.2010 - 14:53) Basili4 написал(а):
Ice
Я знаю событие работатет я не пойму как обновить новое время активности пользователя если он просто пялится на экран или не пялится газету чиатет т.е. ни чего не нажимает мышью не махает.

Спустя 5 минут, 41 секунда (16.07.2010 - 14:58) linker написал(а):
Делается все просто. Когда юзверь логинится, то в некой табличке заводится новая запись. Табличка должна иметь поля: идентификатор сессии, идентификатор пользователя и время последнего обновления. Когда пользователь переходит по страничкам сайта или рефрешится тупо, то по идентификатору сессии выбирается нужная запись из таблицы и апдейтится соответствующее поле с временем.
update sessions set lastupdate = NOW() where sessionid = '$SessionId'
. Время жизни сессии известно из настроек PHP, а значит надо выбирать только те записи из таблицы, у которых поле последнего обновления новее чем NOW() - время жизни сессии.

Спустя 2 минуты, 8 секунд (16.07.2010 - 15:00) tomash написал(а):
Basili4
Может какую-то функцию на стороне клиента, которая через определенные интервалы времени шлет подтверждение что пользователь активный?

Спустя 1 минута, 12 секунд (16.07.2010 - 15:02) Ice написал(а):
нечё не нажимает.... пользователь... и мышью не махает... хм...
Навскидку вариант для пользователя ( зареганного или ... вобщем попадающего под критерий пользюка) -
  • как только пользюк зашел на страницу, у него автоматом появляется сессионный айдишник.
  • проверка по базе, есть ли такой айдишник в таблице онлайн
  • если такой айдишник есть, то, соответственно и время есть и мы апдейтим время в базе текущим временем.
  • а если такой айдишник есть, но время не меняется, то событие само удалит его поистечении какого-то времени, а на уровне РНР нужно обеспечить session_destroy();

Спустя 1 минута, 6 секунд (16.07.2010 - 15:03) Wird_34 написал(а):
Basili4, у меня сейчас сложилось впечатление, что ты хочешь сделать что-то невозможное. Не думаю что JavaScript может определить активность пользователя за компьютером, да и не понятно зачем это для сайта.

Спустя 10 минут, 57 секунд (16.07.2010 - 15:14) Basili4 написал(а):
Wird_34
ну особеность страницы такая пользюк может вообще ничего не делать страница загружена в ней напиханы различные обработчики которые ждут событий как только событие происходит пользователь оповещается и тогда он действует иначе может не чего не делать вот проблема заключается именно в том как узнать о том что он еще действует я думаю написать js скрипт который переодическии сообщает о том что пользюк жив. путем внесения в его запись текущего времени

Спустя 2 минуты, 26 секунд (16.07.2010 - 15:16) Wird_34 написал(а):
Basili4, меня больше интересует, как ты сделаешь отправку данных от сервера к активным пользователям, т. е. оповещение о каком-то событии.

Спустя 1 минута, 12 секунд (16.07.2010 - 15:17) SlavaFr написал(а):
обычно для таких случаев session_set_save_handler и Б.Д. хорошо подходит.

Для показа активных юзеров смотриш просто время последней акции в таблице и сравниваеш ее с (актуальным временем )- (для тебя доступным временем бездействия юзера)

Спустя 9 минут, 38 секунд (16.07.2010 - 15:27) Basili4 написал(а):
Wird_34
легко есть табла юзер месаг у каждего юзера запущена функция которая каждых недцать сек осматривает эту таблу как только появляются сообщения для этого пользователя она выдает сообщение пользователю когда пользователь реагирует на него в запись с сообщением ложится флаг о том что пользюк видел сообщение и среагировал на него тригером осуществляется проверка на массовые сообщения т.е. всем пользюкам это самое проблемное место как узнать что все пользюки с реагировали на сообщение для этого я создал таблицу с активнми пользователями и тригером сверяю количество пользователей в системе с количеством отреагироваших как только они равны отсылаю сообщение что все пользователи ответили

Спустя 2 дня, 19 часов, 12 минут (19.07.2010 - 10:39) gzim9x написал(а):
Basili4
чаще всего это реализуется через AJAX: клиент периодически опрашивает сервер -- не ли для него новых сообщений. Отправка этих запросов и позволяет считать клиента онлайн.
это можно реализовать и через flash -- там есть поддержка сокетных соединений.

Спустя 9 минут, 3 секунды (19.07.2010 - 10:48) Basili4 написал(а):
gzim9x
Вот это идея вот это правильно я так и сделаю. Спасибо.


_____________
Цитата
От постоянного сидения рядом с клавиатурой начинает болеть спина.


Делаю сайты, пишу скрипты php, js.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.