/// <summary> /// 更新PV统计 /// </summary> /// <param name="updatePVStatState">更新PV统计状态</param> public static void UpdatePVStat(UpdatePVStatState updatePVStatState) { BrnShop.Core.BSPData.RDBS.UpdatePVStat(updatePVStatState); }
/// <summary> /// 更新PV统计 /// </summary> /// <param name="updatePVStatState">更新PV统计状态</param> public void UpdatePVStat(UpdatePVStatState updatePVStatState) { lock (_pvstatlocker) { ShopConfigInfo shopConfig = BSPConfig.ShopConfig; ++_userpvstat; ++_yearpvstat; ++_monthpvstat; ++_daypvstat; ++_hourpvstat; ++_weekpvstat; if (updatePVStatState.IsMember) ++_memberpvstat; else ++_guestpvstat; //更新浏览器统计 if (shopConfig.IsStatBrowser == 1) { if (_browserpvstat.ContainsKey(updatePVStatState.Browser)) _browserpvstat[updatePVStatState.Browser]++; else _browserpvstat.TryAdd(updatePVStatState.Browser, 1); } //更新操作系统统计 if (shopConfig.IsStatOS == 1) { if (_ospvstat.ContainsKey(updatePVStatState.OS)) _ospvstat[updatePVStatState.OS]++; else _ospvstat.TryAdd(updatePVStatState.OS, 1); } //更新位置统计 if (shopConfig.IsStatRegion == 1) { if (_regionpvstat.ContainsKey(updatePVStatState.RegionId)) _regionpvstat[updatePVStatState.RegionId]++; else _regionpvstat.TryAdd(updatePVStatState.RegionId, 1); } if (_lastupdatepvstatstime < (Environment.TickCount - BSPConfig.ShopConfig.UpdatePVStatTimespan * 1000 * 60)) { UpdatePVStat("week", DateTime.Now.ToString("yyyy-MM-dd") + DateTime.Now.Month.ToString("00") + ((int)DateTime.Now.DayOfWeek).ToString(), _weekpvstat); UpdatePVStat("hour", DateTime.Now.ToString("yyyy-MM-dd") + DateTime.Now.Hour.ToString("00"), _hourpvstat); UpdatePVStat("day", DateTime.Now.ToString("yyyy-MM-dd"), _daypvstat); UpdatePVStat("month", DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString("00"), _monthpvstat); UpdatePVStat("year", DateTime.Now.Year.ToString(), _yearpvstat); UpdatePVStat("total", "guest", _guestpvstat); UpdatePVStat("total", "member", _memberpvstat); UpdatePVStat("total", "user", _userpvstat); foreach (KeyValuePair<string, int> item in _browserpvstat) UpdatePVStat("browser", item.Key, item.Value); foreach (KeyValuePair<string, int> item in _ospvstat) UpdatePVStat("os", item.Key, item.Value); foreach (KeyValuePair<int, int> item in _regionpvstat) UpdatePVStat("region", item.Key.ToString(), item.Value); ResetPVStats(); _lastupdatepvstatstime = Environment.TickCount; } } }
/// <summary> /// 更新PV统计 /// </summary> /// <param name="state">state</param> public void UpdatePVStat(UpdatePVStatState state) { ManagedThreadPool.QueueUserWorkItem(new WaitCallback(PVStats.UpdatePVStat), state); }