redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录当天访问人数 //收集访问客数 $ip = Yii::$app->request->userIP; $wholeSiteVisit = StatVisitClass::getKeyName($sjId, 'whole_site_visit'); $exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteVisit, $ip]); if (empty($exists)) { //记录当天的IP Yii::$app->redis->executeCommand('SADD', [$wholeSiteVisit, $ip]); } } /** * 将昨天的保存入库 */ public static function saveYesterdayNum($sjId) { $yesTime = date("Ymd", strtotime("-1 day")); $resource = self::getByCondition(['sjId' => $sjId, 'time' => $yesTime]); //有数据表示已经保存过了 if (!empty($resource)) { return []; } $wholeSiteView = StatVisitClass::getKeyName($sjId, 'whole_site_view', $yesTime); //获取访问次数 $viewNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]); //获取访问客户数 $wholeSiteVisit = StatVisitClass::getKeyName($sjId, 'whole_site_visit', $yesTime); $visitNum = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]); $asset = MerchantAssetService::getBySjId($sjId); $totalVisit = $asset['totalVisit']; $totalView = $asset['totalView']; $totalVisit = stringUtil::calcAdd($totalVisit, $visitNum); $totalView = stringUtil::calcAdd($totalView, $viewNum); //保存访客数 $data = ['time' => $yesTime, 'totalNum' => $totalVisit, 'riseNum' => $visitNum, 'sjId' => $sjId, 'createTime' => date("Y-m-d H:i:s")]; self::add($data); //保存访问量 $data = ['time' => $yesTime, 'totalNum' => $totalView, 'riseNum' => $viewNum, 'sjId' => $sjId, 'addTime' => time()]; StatViewClass::add($data); //保存累计访问量 MerchantAssetService::updateByCondition(['sjId' => $sjId], ['totalView' => $totalView, 'totalVisit' => $totalVisit]); self::clearYesNum($sjId); } /** * 清空昨天的缓存 */ public static function clearYesNum($sjId) { $yesTime = date("Ymd", strtotime("-1 day")); //访问量清零 $wholeSiteView = StatVisitClass::getKeyName($sjId, 'whole_site_view', $yesTime); Yii::$app->redis->executeCommand('DEL', [$wholeSiteView]); //访客数清零 $wholeSiteVisit = StatVisitClass::getKeyName($sjId, 'whole_site_visit', $yesTime); Yii::$app->redis->executeCommand('DEL', [$wholeSiteVisit]); } //获取今天的访问量 public static function getTodayViewNum($sjId) { $wholeSiteView = StatVisitClass::getKeyName($sjId, 'whole_site_view'); $nowNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]); $nowNum = !empty($nowNum) ? $nowNum : 0; return $nowNum; } //获取今天的访客数 ssh 2020.2.2 public static function getTodayVisitNum($sjId) { $wholeSiteVisit = StatVisitClass::getKeyName($sjId, 'whole_site_visit'); $num = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]); return !empty($num) ? $num : 0; } /** * 获取总访客数 */ public static function getTotalVisit($sjId) { $todayNum = self::getTodayVisitNum($sjId); $asset = MerchantAssetService::getBySjId($sjId); $totalVisit = $asset['totalVisit']; $newTotalVisit = stringUtil::calcAdd($totalVisit, $todayNum); return $newTotalVisit; } /** * 模拟创建昨天的访问IP与数据 */ public static function randYesNum($sjId) { $count = rand(10, 30); $yesTime = date("Ymd", strtotime("-1 day")); echo "\n开始创建昨天的访问量…\n"; for ($i = 0; $i < $count; $i++) { $ip = stringUtil::randIP(); $wholeSiteVisit = StatVisitClass::getKeyName($sjId, 'whole_site_visit', $yesTime); $exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteVisit, $ip]); if (!empty($exists)) { return; } echo $wholeSiteVisit . "\n"; Yii::$app->redis->executeCommand('SADD', [$wholeSiteVisit, $ip]);//记录访问过网站的IP $wholeSiteView = StatVisitClass::getKeyName($sjId, 'whole_site_view', $yesTime); Yii::$app->redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录访问网站人数 } echo "\n创建完成\n"; self::getYesNum($sjId); } /** * 获取昨天的访问IP和数据 */ public static function getYesNum($sjId) { $yesTime = date("Ymd", strtotime("-1 day")); $wholeSiteView = StatVisitClass::getKeyName($sjId, 'whole_site_view', $yesTime); $yesterdayVisitNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]); echo '
';
		echo '昨天的访问总量:' . $yesterdayVisitNum . '
'; $wholeSiteVisit = StatVisitClass::getKeyName($sjId, 'whole_site_visit', $yesTime); echo 'ipList的Key:' . $wholeSiteVisit . '
'; $list = Yii::$app->redis->executeCommand('SMEMBERS', [$wholeSiteVisit]); echo 'ipList:
'; print_r($list); $num = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]); echo 'ipList里的访问数量统计:' . $num; } }