php – 人气算法

前端之家收集整理的这篇文章主要介绍了php – 人气算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作一个类似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相关.

原文链接:https://www.f2er.com/php/139524.html

猜你在找的PHP相关文章