PDA

View Full Version : سوال: آمار کاربران آنلاین بیشتر از آمار بازدید روزانه است !!



bahar_engineer
سه شنبه 01 بهمن 1392, 17:28 عصر
سلام
من با سی شارپ برنامه نویسی می کنم و تا به حال توی چند تا سایت از سیستم آمار گیری استفاده کردم که همیشه آمار و درست نشون می ده
یه سایت دارم که از قبل با vb.net نوشته شده و من توش بعضی جاها با C#‎‎ به روز رسانی کردم و صفحات جدید بهش اضافه کردم
توی این سایت هم از همون سیستم آمارگیری استفاده کردم و خودم تبدیل به vb کردمش البته از dll سی شارپ استفاده می کنه
اما نمی دونم چرا یه کم که می گذره آمار کاربران آنلاین بیشتر از آمار بازدید روزانه می شه!!
احساس من اینه که سشن ها عمل نمی کنند و توی رویداد تمام شدن اپلیکیشن کاربرانی که خارج شدن رو کم نمی کنه
اگه ممکنه نظرتونو بذارید

من از کد کلاس counter که مطمئن هستم اونو اینجا نمی ذارم احساس من اینه که مشکل از فایل global هست
کدهای اونو اینجا می ذارم لطفا نظر بدین


<%@ Application Inherits="Portal.Web.Global" Language="VB" %>

<script RunAt="server">

Public Sub Session_OnStart()
' Add a dummy value to session so that the session ID remains constant. (This is required by WebController.GetRolesForUser().)
Session.Add("1", "1") ****************
Dim objcounter As New Counter
objcounter.Get()
Session.Timeout = 20
Session("Start") = "Now"
Application.Lock()
Application("ActiveUsers") = CInt(Application("ActiveUsers")) + 1
Application.UnLock()
End Sub

Public Sub Session_OnEnd()
GalleryServerPro.Web.WebsiteController.CacheManage r.Remove(Session.SessionID + "_roles") ************************

Application.Lock()
Application("ActiveUsers") = CInt(Application("ActiveUsers")) - 1
OnlineActiveUsers.OnlineUsersInstance.OnlineUsers. UpdateForUserLeave()
Application.UnLock()
End Sub

Sub Application_OnStart(ByVal Sender As Object, ByVal E As EventArgs)
' Set user count to 0 when start the application
Application("ActiveUsers") = 0
End Sub

Sub Application_OnEnd(ByVal Sender As Object, ByVal E As EventArgs)
' Set user count to 0 when start the application
Application("ActiveUsers") = 0
End Sub

</script>


در اینجا خط هایی که کنارشون ستاره گذاشتم از قبل توی سایت بوده واسه همین من نتونستم تبدیلش کنم به سی شارپ (فکر کنم تبدیل کردم خطا داد و چون سایت خیلی بزرگه و من نمی دونم برنامه نویس قبلی این سایت دقیقا چیکار کرده) ترجیح دادم کدهای خودم رو به وی بی تبدیل کنم.
راستی من کاربران آنلاین رو با استفاده از OnlineActiveUser می گیرم اما بازدید روزانه رو با استفاده از همون کلاس counter که اطلاعات رو توی دیتابیس ذخیره می کنه
کد نمایش کاربران آنلاین و آمار بازدید هم اینه :
اینا سی شارپ هستن


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Resources;
using System.Data.SqlClient;

public partial class Modules_amar : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
// Counter mycount = new Counter();
// mycount.Get();

int onlineusers = int.Parse(Application["ActiveUsers"].ToString());
int onlinemembers = int.Parse(OnlineActiveUsers.OnlineUsersInstance.On lineUsers.RegistredUsersCount.ToString());
int gus = onlineusers - onlinemembers;
Label1.Text = "تعداد کاربران آنلاین : " + onlineusers.ToString();
// Label2.Text = "اعضای آنلاین : " + onlinemembers.ToString();
// Label3.Text = "مهمانان آنلاین : " + gus.ToString();


// bazdidha
string c;
c = System.Configuration.ConfigurationManager.Connecti onStrings["LocalSqlServer"].ConnectionString;
SqlConnection Conn_String = new SqlConnection(c);

Int32 int_Today = 0;
Int32 int_Yesterday = 0;
Int32 int_Month = 0;
Int32 int_Total = 0;

SqlCommand obj_Command = new SqlCommand();
obj_Command.CommandText = "Select * From tbl_counter";
obj_Command.Connection = Conn_String;
Conn_String.Open();
SqlDataReader obj_DataReader = obj_Command.ExecuteReader();
while (obj_DataReader.Read())
{
int_Today = Int32.Parse(obj_DataReader["fld_Today"].ToString());
int_Yesterday = Int32.Parse(obj_DataReader["fld_Yesterday"].ToString());
int_Month = Int32.Parse(obj_DataReader["fld_Month"].ToString());
int_Total = Int32.Parse(obj_DataReader["fld_Total"].ToString());
}
obj_DataReader.Close();
Label4.Text = "بازدید امروز : " + int_Today.ToString();
// Label5.Text = "بازدید دیروز : " + int_Yesterday.ToString();
Label6.Text = "بازدید ماه جاری : " + int_Month.ToString();
Label7.Text = "بازدید کل : " + int_Total.ToString();
Conn_String.Close();
}
}



مثلا امروز آمارو اینطوری زده :
کاربران آنلاین 781 نفر
بازدید امروز : 777 نفر

لطفا راهنمایی کنین
ممنون