redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录当天访问人数 //收集访问客数 $ip = Yii::$app->request->userIP; $wholeSiteVisit = StatVisitClass::getKeyName($merchantId, '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($merchantId) { $yesTime = date("Ymd", strtotime("-1 day")); $resource = self::getByCondition(['merchantId' => $merchantId, 'time' => $yesTime]); //有数据表示已经保存过了 if (!empty($resource)) { return []; } $wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime); //获取访问次数 $viewNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]); //获取访问客户数 $wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit', $yesTime); $visitNum = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]); $asset = MerchantAssetService::getByMerchantId($merchantId); $totalVisit = $asset['totalVisit']; $totalView = $asset['totalView']; $totalVisit = stringUtil::calcAdd($totalVisit, $visitNum); $totalView = stringUtil::calcAdd($totalView, $viewNum); //保存访客数 $data = ['time' => $yesTime, 'totalNum' => $totalVisit, 'riseNum' => $visitNum, 'merchantId' => $merchantId, 'createTime' => date("Y-m-d H:i:s")]; self::add($data); //保存访问量 $data = ['time' => $yesTime, 'totalNum' => $totalView, 'riseNum' => $viewNum, 'merchantId' => $merchantId, 'addTime' => time()]; StatViewClass::add($data); //保存累计访问量 MerchantAssetService::updateByCondition(['merchantId' => $merchantId], ['totalView' => $totalView, 'totalVisit' => $totalVisit]); self::clearYesNum($merchantId); } /** * 清空昨天的缓存 */ public static function clearYesNum($merchantId) { $yesTime = date("Ymd", strtotime("-1 day")); //访问量清零 $wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime); Yii::$app->redis->executeCommand('DEL', [$wholeSiteView]); //访客数清零 $wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit', $yesTime); Yii::$app->redis->executeCommand('DEL', [$wholeSiteVisit]); } //获取今天的访问量 public static function getTodayViewNum($merchantId) { $wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view'); $nowNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]); $nowNum = !empty($nowNum) ? $nowNum : 0; return $nowNum; } //获取今天的访客数 shish 2020.2.2 public static function getTodayVisitNum($merchantId) { $wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit'); $num = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]); return !empty($num) ? $num : 0; } /** * 获取总访客数 */ public static function getTotalVisit($merchantId) { $todayNum = self::getTodayVisitNum($merchantId); $asset = MerchantAssetService::getByMerchantId($merchantId); $totalVisit = $asset['totalVisit']; $newTotalVisit = stringUtil::calcAdd($totalVisit, $todayNum); return $newTotalVisit; } /** * 模拟创建昨天的访问IP与数据 */ public static function randYesNum($merchantId) { $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($merchantId, '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($merchantId, 'whole_site_view', $yesTime); Yii::$app->redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录访问网站人数 } echo "\n创建完成\n"; self::getYesNum($merchantId); } /** * 获取昨天的访问IP和数据 */ public static function getYesNum($merchantId) { $yesTime = date("Ymd", strtotime("-1 day")); $wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime); $yesterdayVisitNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]); echo '
';
		echo '昨天的访问总量:' . $yesterdayVisitNum . '
'; $wholeSiteVisit = StatVisitClass::getKeyName($merchantId, '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; } }