84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
比如我的网站希望统计出最近7天热门的帖子,就是最近7天访问量增加最多的帖子,该如何用php设计,一直想不出好的办法,希望大家指点下。其实也就是类似discuz那种热帖的功能
光阴似箭催人老,日月如移越少年。
可以使用定时功能,每X小时执行一次统计,对最近七天的帖子的访问次数、收藏、点赞、评论等进行系数计算
例如: 帖子热度=访问次数*1+收藏*10+点赞*3+评论*5
然后结果排序将其排序存储到数据表或则缓存中。
数据库设计的时候要体现出增量, 以前都是在文章表直接加个字段表示访问次数. 遇到这种情况要把访问情况单独放在一个表存放, 每次访问都作为一条记录
根据文章ID redis 做自增操作。页面展示倒序排序
数据表中记录发帖时间 :time,和浏览次数:views。views随浏览量自增。获取昨天,以前前七天的时间戳范围。
public function last_unix($a) { $y = date("Y"); $m = date("m"); $d = date("d")-$a; $start= mktime(0,0,0,$m,$d,$y); $end= mktime(23,59,59,$m,$d,$y); return array('start' =>$start ,'end'=>$end ); } $yesterday = $this->last_unix(1); $lastsevernday = $this->last_unix(7); $hotest=$a->where("time>'$lastsevernday' AND time<'$yesterday'")->max('views');
可以使用定时功能,每X小时执行一次统计,对最近七天的帖子的访问次数、收藏、点赞、评论等进行系数计算
然后结果排序将其排序存储到数据表或则缓存中。
数据库设计的时候要体现出增量, 以前都是在文章表直接加个字段表示访问次数. 遇到这种情况要把访问情况单独放在一个表存放, 每次访问都作为一条记录
根据文章ID redis 做自增操作。页面展示倒序排序
数据表中记录发帖时间 :time,和浏览次数:views。views随浏览量自增。
获取昨天,以前前七天的时间戳范围。