PDA

View Full Version : سوال: آمار سایت در Asp



vahid.bz
جمعه 30 مهر 1395, 15:59 عصر
سلام
دوستان من در فایل Global.asax کد زیر رو نوشتم :
<%@ Application Language="C#" %>

<script runat="server">

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

void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown

}

void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs

}

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

void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
Application.Lock();
Application["OnlineUsers"] = Convert.ToInt32(Application["OnlineUsers"])-1;
Application.UnLock();
}

</script>



حالا کجا باید تعداد کل بازدید ها رو توی پایگاه داده ذخیره کنم و برای سزی بعد بخونم؟
(توی pageload صفحه اول سایت این کارو کردم اما هر بار که referesh می کنم یکی به پایگاه داده اضافه میشه و در نتیجه یکی به آمار کل)

bomb23
شنبه 01 آبان 1395, 11:03 صبح
سلام

این روش آمار خیلی دقیق نیست و بسته به زمان انقضای سشن مربوطه تلورانس داره.
در کل شیوه این روش به این صورته که وقتی یک درخواست جدید میاد برای اون سشن یکی به مقدار OnlineUsers اضافه میشه اما چون با بسته شدن مرورگر نمیشه Session_End رو مشخص کرد پس از تعداد آنلاین کم نمیشه.
حالا زمانی از اون مقدار کم میشه که سشن باطل بشه که مثلا میشه 5 دقیقه بعد.

راه درست برای آمار دقیق آنلاین استفاده از signalr هستش.

moongairl
شنبه 01 آبان 1395, 11:22 صبح
سلام

این روش آمار خیلی دقیق نیست و بسته به زمان انقضای سشن مربوطه تلورانس داره.
در کل شیوه این روش به این صورته که وقتی یک درخواست جدید میاد برای اون سشن یکی به مقدار OnlineUsers اضافه میشه اما چون با بسته شدن مرورگر نمیشه Session_End رو مشخص کرد پس از تعداد آنلاین کم نمیشه.
حالا زمانی از اون مقدار کم میشه که سشن باطل بشه که مثلا میشه 5 دقیقه بعد.

راه درست برای آمار دقیق آنلاین استفاده از signalr هستش.
سلام
میشه یه نمونه برنامه ش رو مثال بزنید.
ممنون

bomb23
شنبه 01 آبان 1395, 14:54 عصر
اول باید کار با signalr رو یاد بگیرید بعد با مقاله زیر راحت پیاده سازی میشه.
https://www.simple-talk.com/dotnet/asp-net/tracking-online-users-with-signalr/