예제 #1
0
 /// <summary>
 /// 更新PV统计
 /// </summary>
 /// <param name="updatePVStatState">更新PV统计状态</param>
 public static void UpdatePVStat(UpdatePVStatState updatePVStatState)
 {
     BrnShop.Core.BSPData.RDBS.UpdatePVStat(updatePVStatState);
 }
예제 #2
0
        /// <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;
                }
            }
        }
예제 #3
0
 /// <summary>
 /// 更新PV统计
 /// </summary>
 /// <param name="state">state</param>
 public void UpdatePVStat(UpdatePVStatState state)
 {
     ManagedThreadPool.QueueUserWorkItem(new WaitCallback(PVStats.UpdatePVStat), state);
 }