Здравствуйте.
Скажите, можно ли средствами Битрикса определить, находится ли зарегистрированный посетитель сайта он-лайн?
Скажите, можно ли средствами Битрикса определить, находится ли зарегистрированный посетитель сайта он-лайн?
21.07.2010 19:08:10
Здравствуйте.
Скажите, можно ли средствами Битрикса определить, находится ли зарегистрированный посетитель сайта он-лайн? |
|
|
|
21.07.2010 21:00:24
Есть метод CUser::IsOnLine($id, $interval=120)
для определения статуса "Сейчас на сайте" по ID пользователя. |
|
|
|
22.07.2010 14:00:23
Сделал так:
в \bitrix\php_interface\init.php написал AddEventHandler("main", "OnBeforeProlog", "MyUserOnline"); function MyUserOnline() { if($GLOBALS["USER"]->IsAuthorized()) CUser::SetLastActivityDate($GLOBALS["USER"]->GetID()); } И вывел список пользователей онлайн для проверки, там, где собирался выводить данные о том, активен сейчас пользователь или нет $by = "s_last_date"; $order = "desc"; $db = CUser::GetList($by, $order, array("LAST_ACTIVITY"=>120)); while($dba = $db->Fetch()) { echo $dba['ID']."<br>"; } |
|
|
|
22.07.2010 14:01:46
В результате ничего не вывелось, хотя пользователи онлайн на тот момент были
|
|
|
|
22.07.2010 19:21:32
Вы все правильно сделали, и если были авторизовавшиеся пользователи, то дата их активности должна была обновиться. Проверил у себя ваш код - все работает.
|
|
|
|
02.10.2010 06:51:03
А если у пользователя страница откры, но он не проявлял активности больше 2х минут, то не отобразится, что пользователь онлайн?
|
|
|
|
04.10.2010 09:56:49
В http нет такого понятия, как "онлайн", поскольку он не подразумевает поддержание соединения вообще. Просто считается, что пользователь "онлайн", если последний запрос страницы был не позднее N минут назад. Если хотите поддерживать статус "онлайн" все время, пока открыт браузер - то запрашивайте какую-нибудь мини-страницу с битриксом через ajax по таймеру, чтобы "освежить" сессию.
Экс-битриксоид.
Компонент (и.с.) - существительное мужского рода (ГОСТ 34.003-90). |
|
|
|
04.10.2010 10:03:55
А как же жизнь сессии? Если она не ограничена по времени и существует, значит пользователь онлайн?
|
|
|
|
04.10.2010 10:51:19
Жизнь сессии (срок установки cookie) - это сколько времени должно пройти, чтобы пользователю пришлось заново авторизоваться на сайте. Это сделано для исключения доступа к сайту человека, который может воспользоваться этим же компьютером позднее. Это время может быть неограниченным для удобства, но это не значит, что пользователь "онлайн", т.е. использует сайт или следит за "процессом".
Экс-битриксоид.
Компонент (и.с.) - существительное мужского рода (ГОСТ 34.003-90). |
|
|
|
04.10.2010 10:54:55
Понял, спасибо
|
|
|
|
04.10.2010 10:55:48
В поле "LAST_ACTIVITY" значения проставляет модуль соц. сети, если его у вас нет то соответственно это поле пустое для всех. В этом случае можно сделать свое событие которое бы на каждый клик обновляло значение данного поля у зарегистрированных пользователей
|
|
|
|
04.10.2010 10:58:32
|
|
|
|
04.10.2010 18:39:49
|
|||||
|
|
05.10.2010 02:25:49
Андрей, описал пример решения вашей задачи в блоге:
|
|
|
|
05.10.2010 05:22:18
Sergey Leshchenko, Спасибо вам большое, хороший вы человек
![]() |
||||
|
|
|||