我正在制作一个类似digg的网站,将有一个不同类别的主页.我想显示最受欢迎的提交.
我们的评级系统只是“喜欢”,像“我喜欢这样”,什么也没有.我们基本上希望每次显示最多的“喜欢”的提交.我们想要有三个类别:全时流行,上周和最后一天.
有人知道有什么帮忙吗?我不知道如何去做这个并使其高效.我以为我们可以用10分钟的时间来运行一些cron-job,并且在过去的10分钟内抽出一些喜欢的数据…但是我被告知这是非常低效的?
帮帮我?
谢谢!
通常,Digg和Reddit类似网站在提交日期之前,而不是投票的时间.所有这一切所需要的是一个简单的SQL查询,以查找X时间段的顶级提交.这是一个伪查询,可以使用以下方法查找过去24小时内的10个最热门链接:
select * from submissions where (current_time - post_time) < 86400 order by score desc limit 10
基本上,这个查询说要查找现在和发布时间之间的秒数小于86400的所有提交,这在UNIX时间是24小时.
如果您真的想在X时间间隔内衡量人气,那么您需要在其他表格中存储每次投票的帖子和时间:
create table votes ( post foreign key references submissions(id),time datetime,vote integer); -- +1 for upvote,-1 for downvote
然后,您可以生成X和Y之间最受欢迎的帖子列表,如下所示:
select sum(vote),post from votes where X < time and time < Y group by post order by sum(vote) desc limit 10;
从这里你只是跳跃,跳过和内部联系,使得发送数据与返回的ID相关.