해당 사이트에서 얼마나 많은 사람들이 온라인 상태인지 보여줘야합니다. 이 사이트는 ASP.NET 2.0을 사용하여 개발되었습니다. 현재 Global.asax에서 세션 시작 (1 씩 증가) 및 세션 종료 이벤트 (1 씩 감소)를 사용하고 있습니다. 그러나 Session_End 이벤트는 대부분의 시간을 제대로 호출하지 않습니다. 이것을 달성하기위한 더 좋은 방법이 있습니까?웹 사이트에서 얼마나 많은 사람들이 온라인 상태인지 찾는 방법
답변
우리는 여러 가지 방법을 시도한 후에도 각 사용자의 유휴 시간 추적으로 끝나고 유휴 시간이 세션 시간 초과를 넘으면 사용자가 더 이상 온라인 상태가 아닌 것으로 간주합니다. 물론 사용자가 로그 오프하거나 다시 시간 초과 후 다시 로그인하는 것과 같은 다른 문제를 고려해야합니다.
Session_Start
에서 증가하고 사용하지 않으면 Session_End
에서 감소합니다. 데이터베이스 같은 다른 수단.
요청을 인증 할 때 데이터베이스의 타임 스탬프를 업데이트하여 사용자가 활성 상태임을 표시하고 지정된 시간 (예 : 15 분) 후에 동시 사용자 수를 수집하는 쿼리는 해당 행을 무시합니다 (카운트를 감소 시킴).
빠른 Google 검색 결과 HttpModule이 handy way of doing this 인 것으로 나타났습니다.
전체적으로 Yohann은 이와 관련하여 훌륭한 업무를 수행했습니다. 위에 제안 된 시간 제한을 구현하지만 그렇지 않은 경우에는 서버의 perfmon.exe를 확인하고 WebService >> WebAppPool의 현재 연결 수를 확인하는 것 외에는이를 정확하게 수행 할 방법이 없습니다.
내가 직접 구현 한 SQL Server 테이블을 사용하여 날짜/시간 및 사용자 정보를 인증에 저장했습니다. 필자는 데이터 캐시를 새로 고쳐야 할 때마다 IP 주소를 다시 분석하고 일치시킴으로써이 수를 줄였습니다 (매 10 분마다 한 번씩).
+1 매우 건전한 접근 방식처럼 들립니다. SQL Server를 사용하여 저장소를 백업하려면 웹 팜 구현에 필요합니다 (세션 저장소에 Velocity와 같은 것을 사용하지 않는 한). 미래의 실험을 위해 북마크되었습니다. 감사! –
이전에 해보았지만 수동으로 세션 (Session.Abandon)을 삭제 한 경우에만 Session_End가 호출된다는 사실을 입증 할 수 있습니다. 당신이 그것에 대해 생각할 때, 그것은 의미가 있습니다. 사용자가 웹 사이트에 있지 않으면 코드가 실행되지 않습니다.
내가 한 것은 사용자가 사이트에서 마지막으로 본 사용자 이름과 날짜 시간을 포함하는 응용 프로그램 상태에 해시 테이블을 저장하는 것이 었습니다. 모든 페이지로드에 대해 현재 사용자에 대해이 값을 삽입하거나 업데이트하는 함수를 호출합니다. 그런 다음 전체 목록을 삭제하고 세션 시간 초과 (20 분 또는 그 이상)보다 오래된 모든 항목을 제거합니다. 이 목록을 변경할 때 경쟁 조건을 피하려면 잠금 또는 동기화를 사용해야합니다.
이렇게하면 몇 명의 사용자를 알 수있을뿐만 아니라 특정 사용자를 알 수있는 이점이 있습니다.
사용자 이름과 같은 고유 한 이름이없는 경우 대신 Session.SessionID를 사용할 수 있습니다. 귀하의 사이트 방문자마다 고유해야합니다.
"웹 가든 모드"또는 다중 서버 설정에서 프로세스간에 공유하지 않으므로 응용 프로그램 또는 App 인스턴스 상태 변수에 자체적으로 문제가 발생하므로주의해야합니다. 더 큰 규모의 설정을 위해서는 데이터베이스 또는 분산 캐시와 같이보다 영구적 인 매체가 필요합니다.
- 1. 트래픽이 많은 웹 사이트에서 성능을 높이기는 얼마나 중요합니까?
- 2. 대화방, 누가 온라인 상태인지 표시
- 3. 사용자가 웹 사이트에서 온라인 상태이거나 오프라인 상태인지 여부를 확인하는 방법은 무엇입니까?
- 4. WCF 서비스가 온라인 상태인지 확인하는 예가 있습니까?
- 5. iphone에있는 웹 사이트에서 RSS를 찾는 방법
- 6. 얼마나 많은 사람들이 mySQL에서 제품을 원하고 있는지 보여주는 방법은 무엇입니까?
- 7. 열려있는 파일이 너무 많습니다 : 얼마나 많은 사람들이 무엇인지, 개방, 얼마나 많은 수 나는 자바에서이 예외 얻고있다
- 8. 얼마나 많은 사람들이 실제로 COM +/.NET EnterpriseServices를 사용합니까?
- 9. 얼마나 많은 사람들이 jQuery없이 자바 스크립트를 수행 할 수 없습니까?
- 10. PHP 업로드 입력 배열 및 얼마나 많은 파일을 찾는 방법?
- 11. 내 프록시가 온라인 상태인지 확인하는 방법이 있습니까?
- 12. Xcode iPhone 프로그래밍 서버가 온라인 상태인지 확인
- 13. 어떻게 사람이 온라인 상태인지 확인하는 여부를
- 14. RTMP : 파이썬에서 스트림이 온라인 상태인지 확인하십시오.
- 15. oe 특정 사용자가 온라인 상태인지 확인하십시오.
- 16. 사용자가 SharePoint 2010에서 온라인 상태인지 검색
- 17. 사이트가 온라인/오프라인으로가는 이유를 찾는 방법
- 18. 웹 사이트에서 하위 도메인을 찾는 방법?/IP없이 연결하는 방법
- 19. 작성한 스크립트를 얼마나 많은 사람들이 사용하고 있는지 알아 보는 방법은 무엇입니까?
- 20. 얼마나 많은 서비스를 가져야합니까?
- 21. iPhone : 웹 서비스에서 얼마나 많은 객체를 가져와야합니까?
- 22. 사용자가 웹 페이지에서 얼마나 많은 시간을 계산합니까?
- 23. 얼마나 많은 기능이
- 24. NSTimer가 활성 상태인지 여부를 찾는 방법은 무엇입니까?
- 25. rrd에 얼마나 많은 rra?
- 26. asp 웹 사이트에서 많은 수의 비디오를 유지하는 방법
- 27. Flickr는 사람들이 사이트에서 이미지를 다운로드하지 못하도록 어떻게합니까?
- 28. 동적 웹 사이트에 대해 얼마나 많은 언어가 "권장"됩니까?
- 29. 온라인 상태를 처리하는 방법. 손님, 사용자 등
- 30. 매일 얼마나 많은 사건이 발생했는지를 카운트하는 TSQL
ASP.NET 멤버 자격 공급자를 사용하고 있습니까? 같은 SqlMembershipProvider? –