Как определить находится ли пользователь в данный момент на сайте?
Как определить находится ли пользователь в данный момент на сайте?
|
В php с помощью механизма сессий
можно или вручную запоминать время захода и активность. |
каким образом в php такое возможно?
|
session_start() вызывается в php скрипте и формирует куку
с идентификатором для пользователя и передает вместе со страницей (или если пользователь без кук надо вручную ссылки и формы модифицировать) Пользователь следующий раз заходит с этим идентификатором и php знает кто вошел. Но это все относительно - зависит от времени хранения сессии. |
micscr,
вы какую-то несуразицу несете. и вообще не в тему.конкретизируйте свои мысли PAMAC, что вы подразумеваете под "находится"? если JS запустился на выполнение, то значит пользователь находится на сайте.как бы. или подразумевается именно то, что он находится на конкретно вашей вкладке, а не на другой сайт смотрит, открыв ваш в фоне? для этого используются события window.onfocus window.onblur |
Я хочу понять как сделать следующее: допустим на сайте 100 зарегистрированных пользователей и 69 из них в данный момент времени находятся на сайте, так вот: как сделать так чтобы для любого из 100 пользователей, который находится на сайте, стали видны(т.е. пишем "пользователь в сети") остальные пользователи находящиеся в данный момент времени на сайте...
|
Это делается не средствами JS, а серверными средствами
сохраняете в базу, к примеру, данные о последнем времени захода каждого пользователя, и считаете количество пользователей, бывших на сайте за последнюю минуту к примеру |
Gvozd,
а почему сессии здесь не годятся? |
А причем здесь сессии?
|
Riim,
именно, пр чем тут они? сессии не дают ни грамма информации о других пользователях.толь ко переменные конкретного пользователя.и поработать с чужой сессией, нельзя если вы знаете как в этой ситуации обойтись сессиями, без использования дополнительных файлов, БД, общей памяти |
А такой алгоритм не катит?:
1) Заходит человек под именем 2) ему создается сессия 3) запоминаем в БД в таблицу X связку "имя->сессия" 4) заходит "наш" пользователь на сайт 5) по таблице X для всех имен проверяется наличие файла сессии 5.1) если имеется - > выводим что присутствует 5.2) если не имеется - > удаляем из X запись. |
ну можно посчитать количество файлов сессий *JOKINGLY*
|
Цитата:
|
Цитата:
Необходимые издержки, кому надо точно - можно в таблицу X добавить поле "время последнего захода" и фильтровать в пункте 5) еще по нему. |
Цитата:
Цитата:
|
Цитата:
|
в общем, для начала нужно определиться, что значит "пользователь находится на сайте"
|
"пользователь находится на сайте" - значит что пользователь открыл браузер и "бродит" по моему сайту... а если пользователь закрыл браузер, либо закрыл вкладки моего сайта или нажал на сайте выход - значит пользователь не находится на сайте.
|
сохранять в ответ на каждый запрос пользователя в базе время его запроса, и его SESSID к примеру
на запрос "кто на сайте" выводить тех пользователей, которые посылали запрос в течении последних T секунд каждые Т секунд с клиента посылать запрос на сервер При этом вы получите большую точность чем обычно, и повесившийся сервер. поэтому на практие не стоит применять идею с регулярными запросами. лучше стоит обойтись без них, а в качестве T выбрать среднее время просмотра страницы на своем сайте, к примеру |
спасибо
|
Часовой пояс GMT +3, время: 16:35. |