文章点击数的统计

思路: 设计表格,对应的文章id(关联):news_id;本机IP;用户ID:user_id;
最后点击事件(last_click_time);点击总数(click_count)!
避免重复多次点击问题,规定IP和最后点击时间作为判断
1.结合最后点击时间和系统时间作对比(本人是半个小时为有效)若为有效点击
count叠加1
2.控制IP作为标识,区分重复!

因为文章ID 是唯一的,所以最后统计是sum聚合求总!
第二种思路:在新闻列表中设计一个点击总数字段,最后调取这个click_counts

时间和记录最后点击次数 代码

private  function checkNeedAddClick($tid, $user_info,$type) {
//获取到对应IP
$ip = strval(Comm_Tools::getRemoteAddr());
     $time = time() - 1800;  //半小时前

     $up_flag = false; //更新阅读量标识

     $sql = sprintf("SELECT * FROM {$db->_tbl_name} where ip = '%s' AND post_id = %d AND article_type = '%s' LIMIT 1",$ip, intval($tid),$type);
     $one_data = $r_db->getAll($sql);
     if(count($one_data) > 0 && isset($one_data[0]['id'])) {
         //update
         if(strtotime($one_data['0']['last_click_date']) < $time){
             //已存在并且上次点击时间在半小时前更新点击
             $up_ary = [
                 'last_click_date' => date("Y-m-d H:i:s")
             ];
             if(isset($user_info['userId'])) $up_ary['user_id'] = $user_info['userId'];

             $db->update($up_ary, ['id' => $one_data[0]['id']]);
             $up_flag = true;
         }
     } else {
         // add
         $inser_data = [
             'ip' =>  $ip,
             'post_id' => $tid,
             'last_click_date' => date("Y-m-d H:i:s"),
             'article_type' => $type
         ];
         if(isset($user_info['userId'])){
             $inser_data['user_id'] = $user_info['userId'];
         }
         $db->insert($inser_data);
         $up_flag = true;
     }
     return $up_flag;
}

添加次数,根据上边方法返回一个参数,有效则添加一次数据

   $flag = $this->checkNeedAddClick($tid, $user_info,$type);
   if($flag) {
       if($type==1){
           $db3 = Mod_TgPostModel::instance();
           $np_id = 'post_id';
       }else if($type==2){
           $db3 = Mod_TgNewsModel::instance();
           $np_id = 'news_id';
       }
       $w_db = Comm_Db::getDbWrite();
       $w_db->query(sprintf("UPDATE {$db3->_tbl_name} SET click_counts = click_counts+1 WHERE {$np_id}=%d",$tid));   
   }

猜你喜欢

转载自blog.csdn.net/qq_37899005/article/details/82117019
今日推荐