Как мне отслеживать количество текущих сеансов на моем сайте?Отслеживать, кто сейчас на сайте
ответ
Если вы просто хотите знать, кто просматривает страницы на небольшом сайте rinky-dink, один из способов - иметь список последних запросов (или статических) в списке приложений, а также дату/время запроса , Всякий раз, когда кто-то запрашивает страницу, удаляет все «старые» хиты (старше X минут) и добавляет (или обновляет) информацию о посетителе с датой/временем,
Обратите внимание, что для действительно загруженного сайта, это, вероятно, будет плохой идеей. Несколько более масштабируемым решением будет иметь столбец «последнего посещения» в вашей таблице пользователей и обновлять его всякий раз, когда пользователь запрашивает страницу. Но это не помогло бы отслеживать анонимных/не зарегистрированных пользователей.
В любом случае, чтобы узнать, кто «активен», вы просматриваете данные и находите все посещения/пользователи с последним посещением меньше, чем X минут назад, где X - это номер, который вы считаете подходящим. Обычно 20-60 минут достаточно хороши.
Очень простой способ - следить за последним действием каждого пользователя. После периода отсутствия активности вы говорите, что этот пользователь больше не активен.
Одним из простых способов было бы написать небольшой модуль http (или даже воспользоваться global.asax), который управляет созданием сеанса и завершением сеанса обновления таблицы коллекции или базы данных всех активных пользователей и когда сеанс завершается, чтобы удалить запись.
RE: Когда сессия заканчивается, вы все равно должны иметь доступ к самому сеансу или, по крайней мере, идентификатору сеанса либо из свойства отправителя, либо из свойства eventargs. Это даст вам простой способ связать сеанс asp.net с пользователем с помощью идентификатора сеанса. Вы можете легко протестировать это, запустив приложение в отладке, а в непосредственном окне - Session.Abandon(); для запуска этого события программно, чтобы увидеть, как это происходит с живым кодом, который вы можете отлаживать.
Примечание. Я не уверен в 100% об использовании отправителя/аргументов, но вы должны иметь доступ к самому сеансу непосредственно внутри global.asax SessionEnd от этого. Сеанс, который должен быть доступен (обязательно не используйте HttpContext.Current.Session, потому что контекст не существует).
Пробовал это, и он не работает так хорошо. Когда сеанс заканчивается таймаутом, вы получаете событие, завершившее сеанс, после того, как сеанс исчез, поэтому вы не знаете, какой сеанс закончился. –
Одна вещь, которую вы могли бы сделать, это реализовать свой собственный SessionStateStoreProvider: http://msdn.microsoft.com/en-us/library/ms178587.aspx
В вашей реализации GetItem, вы бы обновить свою собственную коллекцию текущих данных сессии и в вашей реализации RemoveItem, у вас есть доступ к ASP .NET Session, поэтому вы можете удалить элемент из своей коллекции до удаления сеанса ASP.NET обычным способом. Вы можете запросить свою коллекцию для активных сеансов.
В качестве альтернативы:
Если вы используете ASP.NET поставщика членства, вы можете запросить базу данных с чем-то вдоль линий:
Create Procedure dbo.GetCurrentUsers
@ActiveSince DateTime
AS
SELECT U.UserId, U.UserName, M.Email
FROM aspnet_Users U
INNER JOIN aspnet_membership M ON M.UserId = U.UserId
WHERE U.LastActivityDate > @ActiveSince
GO
Вы бы установить @ActiveSince, чтобы быть текущим DateTime минус таймаут сеанса на вашем сайте.
var sessionState = (System.Web.Configuration.SessionStateSection)
ConfigurationManager.GetSection("system.web/sessionState");
DateTime activeSince = DateTime.Now.AddMinutes(0 - sessionState.Timeout.TotalMinutes);
Это будет включать в себя пользователей, которые пошли на ваш сайт, а затем налево сразу, но нет возможности сказать, являются ли они все еще там, если у вас есть скрипт на вашей странице, которая регулярно отправляет вызов АЯКС на сервер, говорящий, что он все еще открыт. Я бы рекомендовал против этого, так как это увеличило бы трафик, и оно тратит ресурсы без реальной выгоды.
Я бы справился с этим в основном внутри Global.asax. Добавьте Session_Start в глобальный список приложений, содержащий данные, которые вы хотите отслеживать (например, User, SessionId, StartTime, LastRequestTime).
Когда пользователь впервые попадает на сайт, Session_Start добавит запись в GlobalList. Это будет уверен, что каждый уникальный пользователь получит свою собственную запись (дескать, тоже неприятно). Если вы хотите, как только пользователь войдет в систему, вы можете обновить GlobalList, чтобы установить информацию о пользователе (имя, идентификатор, что угодно).
Далее, приложение Application_Start запустит фоновый поток, который проходит через глобальный список и удаляет все элементы, срок действия которых истекает (на основе любого установленного порога, TimeSpan от LastRequestTime-StartTime).
Если вы хотите развернуть это в сценарии WebFarm, вам придется переместить список в свою базу данных.
- 1. Отслеживать пользователя на сайте
- 2. Отслеживать пользователя на моем сайте
- 3. Отслеживать, кто загрузил файл
- 4. Как отслеживать попытки взлома на веб-сайте
- 5. отслеживать глобальную ценность на веб-сайте
- 6. Клиент хочет отслеживать погоду на веб-сайте.
- 7. Как отслеживать ссылки на веб-сайте
- 8. Как отслеживать использование пользователей на сайте?
- 9. Как отслеживать действия пользователя на другом сайте?
- 10. Как отслеживать время пользователя на сайте
- 11. Отслеживать пользовательский «путь» на моем сайте
- 12. Как отслеживать указанный IP-адрес на сайте
- 13. Как отслеживать URL-ссылку на другом сайте
- 14. Как отслеживать изменения на веб-сайте?
- 15. Как отслеживать время, проведенное на сайте
- 16. Кто знает шрифт на следующем веб-сайте
- 17. Как отслеживать, кто использует электронную таблицу Excel?
- 18. Как добавить last.fm сейчас, играя на моем сайте, используя Api
- 19. кнопку PayPal Купить сейчас на моем сайте с вопросом переназначения
- 20. Кто-нибудь знает, как зарегистрироваться на Google Backup API сейчас?
- 21. Лучший способ отслеживать, кто запрашивает какие данные?
- 22. Как отслеживать клики по ссылке на моем сайте
- 23. Как отслеживать, какие документы открываются на веб-сайте
- 24. Как отслеживать, кто попал в хранилище Gitosis?
- 25. Как отслеживать идентификатор корзины на любом данном веб-сайте?
- 26. Как я могу отслеживать посещение пользователя на моем веб-сайте?
- 27. отслеживать данные пользователей на веб-сайте php для обеспечения безопасности
- 28. Отслеживать индивидуальную активность пользователя на сайте с помощью анализатора
- 29. отслеживать данные посетителей на веб-сайте ruby rails?
- 30. Как отслеживать информацию о пользователях на общедоступном веб-сайте
Отчасти это зависит от вашего определения. Мы могли бы говорить о количестве текущих сеансов или о регистрации в течение последнего месяца или о фактическом вкладе в течение последних X-дней. Пожалуйста, предоставьте немного больше информации о том, что именно вы хотите измерить. – kbrimington