Как узнать общее количество созданных сеансов, то есть количество зарегистрированных пользователей? - PullRequest
1 голос
/ 11 июня 2009

Привет, ребята. У меня есть простой основанный на членстве веб-сайт, где пользователи входят в систему и имеют свои собственные профили. Мне бы хотелось иметь возможность в любой момент сказать, сколько пользователей, а точнее, какие пользователи в настоящее время вошли на мой сайт.

Это простая система, основанная на членстве в php. Один из способов понять, как создать таблицу в БД и сохранить там данные для входа и данные сеанса, но можно ли это сделать другим способом, например, чтобы узнать, сколько сеансов было запущено и всех уникальных пользователей в сети.

Ответы [ 3 ]

6 голосов
/ 11 июня 2009

Лучший способ сделать это - записать lastActivityTime для каждого пользователя. Когда они получают доступ к странице, записывают время в свою db-запись. Как только вы это сделаете, выполните простой запрос для подсчета всех записей, у которых lastActivityTime меньше 5 минут от Current Time.

Таким образом, вместо того, чтобы спрашивать «сколько пользователей вошли в систему», вы спрашиваете «сколько пользователей было недавно активным».

2 голосов
/ 11 июня 2009

Основная проблема со всей проблемой «мониторинга активных сеансов» заключается в том, что вы (сервер) не обязательно полностью контролируете сеанс. Пользовательские браузеры могут прервать сеансы в любой момент времени, поэтому вы не можете гарантировать активных пользователей в любой момент.

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

Еще одна вещь, которую вы можете сделать (часто используется в онлайн-чатах для ведения активного списка «чата»), это опросить страницу через заданный интервал (используя AJAX), а затем, даже если они не обновляют страницу вы все еще знаете, что они там. Если ajax-запрос не приходит через указанный интервал, пользователь удалился или закрыл свой браузер.

0 голосов
/ 11 июня 2009

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

...