Dan*_*ein 6 php mysql algorithm
我正在尝试学习如何编写像Reddit.com这样的网站算法,其中有数千个帖子需要排名.他们的排名算法就像这样(你不必阅读它,它更像是我的一般性问题):http://amix.dk/blog/post/19588
现在我有一个存储在数据库中的帖子,我记录他们的日期,他们每个都有一个upvotes和downvotes字段,所以我存储他们的记录.我想知道你如何存储他们的排名?当特定帖子具有排名值,但它们随时间变化时,您如何存储其排名?
如果它们没有存储,那么每次用户加载页面时,您是否对每个帖子进行排名?
你什么时候存储帖子?你是否运行一个cron作业来每隔x分钟自动为每个帖子提供一个新值?你存储它们的价值吗?这是暂时的.也许,直到那篇文章达到最低分并被遗忘?
我绝对不会在每次显示它们时计算它们的等级.
一个简单但不太高效的解决方案是缓存帖子排名,一旦一个帖子的排名发生变化,您就可以清除或刷新缓存.
这不太理想,但有可能.
另一种方法是如你所提到的那样:在数据库中计算和存储排名(理想情况下缓存它们),然后每隔x分钟使用一个cron作业刷新这些排名.
同样,这些是您想要做的基本方法.然后,您可以随着时间的推移建立它们.
您选择的算法很可能非常适合您的需求.
您还需要衡量您的网站将获得什么样的流量,因为它将规定您应该通过什么样的长度来获得正确的算法.