2011-09-15 5 views
0

신뢰할 수있는 사용자 카운터를 구현하고 싶습니다. 현재 세션 변수를 사용하고 있습니다. 구현에 대한 설명은 다음과 같습니다.익명 사용자 및 로그인 사용자 수 - ASP.NET 웹 사이트

void Application_Start(object sender, EventArgs e) 
{ 
    // Code that runs on application startup 
    Application["OnlineUsers"] = 0; 
    Application["LoggedInUsers"] = 0; 
} 

void Session_Start(object sender, EventArgs e) 
{ 
    // Code that runs when a new session is started 
    Application.Lock(); 
    Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1; 
    Application.UnLock(); 
} 

void Session_End(object sender, EventArgs e) 
{ 
    Application.Lock(); 
    if ((int)Application["OnlineUsers"] > 0) 
    { 
     Application["OnlineUsers"] = (int) Application["OnlineUsers"] - 1; 
    } 
    Application.UnLock(); 
} 

protected void Login1_LoggedIn(object sender, EventArgs e) 
{ 
    Application.Lock(); 
    Application["LoggedInUsers"] = (int)Application["LoggedInUsers"] + 1; 
    Application.UnLock(); 
} 

protected void LoginStatus1_LoggedOut(object sender, EventArgs e) 
{ 
    Application.Lock(); 
    if ((int)Application["LoggedInUsers"] > 0) 
    { 
     Application["LoggedInUsers"] = (int) Application["LoggedInUsers"] - 1; 
    } 
    Application.UnLock(); 
} 

이러한 접근 방식의 단점은 잘 알려져 있습니다. 나는 더 정확한 것을 찾을 수 없었다. 도와 줄수있으세요?

답변

0

Session_End의 퍼지 특성을 감안할 때, 필자가 사용한 접근법은 지난 5 분 이내에 활동 한 사람으로 "온라인 사용자"를 정의하는 것입니다. 그러면 해당 기간 내에 활동이있는 사용자의 수를 계산할 수 있습니다.

+0

하지만 익명 사용자 수는 어떻게 계산합니까? – Peter

+0

"계정"이 없더라도 익명 사용자에게 고유 한 세션 ID를 제공 할 수 있습니다. – Larsenal

+0

어떻게 할 수 있는지 알려주세요. – Peter

관련 문제