با سلام
من یک آمارگیر برای سایتم نوشتم که باهر بار ایجاد Session یک کد در برنامه فراخوانی میشه که وظیفه اون کد اینه که یک عدد به تعداد بازدید اضافه میکنه و همچنین یک سطر جدبد اضافه میکنه که اطلاعاتی در مورد نوع مرورگر کاربر و غیره است
حالا مشکل اینه که با هر بار اجرای ()Session_Start به جای یک سطر چند سطر در همان لحظه اضافه میشه !
و Session_Start چند بار در یک لحظه اجرا میشه!
البته متغیر است بعضی وقت ها همان یک سطر اضافه میشود اما در بیشتر مواقع 2 یا 3 یا بیشتر برای یک بازدید !
در لوکال این مشکل وجود نداره اما به روی هاست این مشکل ایجاد میشه.
()private Counter Counter = new Counter ;
protected void Session_Start(object sender, EventArgs e)
{
()Application.Lock
();Counter.AddUnique
();Application.UnLock
}
public void AddUnique
{
DateTime PDate = DateTime.UtcNow.AddHours(+3.5);
using (var cn = new SqlConnection(Cn.CnString()))
{
using (SqlCommand cmd = new SqlCommand("AddHits", cn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@PDate", SqlDbType.DateTime).Value = PDate;
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
}
با سلام
مشکل اینجاست که خزنده های گوگل هر پنج دقیقه یک بار صفحه شما رو چک میکنن
با تشکر از پاسخ شما..
راه حل جیست؟
ابتدا ای پی رو چک کن که اگر از سمت گوگل نبود اونموقع به دیتابیت اضافه کن:
از این دو متد برای چک کردن ای پی می تونی استفاده کنی:
public static bool IPInRang(string IP, string fromIP, string toIP) { List<string> ip = IP.Split('.').ToList(); List<string> fip = fromIP.Split('.').ToList(); List<string> tip = toIP.Split('.').ToList(); if ((ip.Count() != 4) || (fip.Count() != 4) || (tip.Count() != 4)) return false; bool inRange = false; try { long start = IP2Long(fromIP); long end = IP2Long(toIP); long ipAddress = IP2Long(IP); inRange = (ipAddress >= start && ipAddress <= end); } catch { return false; } return inRange; } public bool Visit_Add(string IP) { if (IPInRang(IP, "66.249.65.0", "66.249.65.255")) //google return false; if (Visit_OnlineIP(IP)) return false; else { return true; } }
من از این دو متد توی یکی از پروژهام قبلا استفاده کردم که جواب داده بود
امیدوارم کمکتون کنه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)