我正在努力在Pligg CMS中建立一个模块,它将限制用户在24小时内给出的投票量。如果他们超过了限制(比如每天40次),一个JavaScript弹出窗口就会弹出“减速!”……类似于Digg如何更新他们的系统。
记录每日投票的最好方法是什么?我是否应该在每次投票时查询MySQL数据库,以检查他们是否超过了限制?或者,将数据存储在服务器上的某种类型的物理文件中更明智?我真的不知道如何构建缓存数据,所以我在考虑创建一个函数来手动检查每次投票的数量。当然,我希望听到更好的建议!
发布于 2011-07-27 09:59:22
使用您的数据库,并在保存时-查询数据库以获取特定时间段内的投票数量,如果低于阈值,则保存。如果超过阈值,则弹出一条javascript警报,通知用户该问题。
发布于 2011-07-27 10:01:42
如果卷很大,你可能想要一些可伸缩的东西,比如memcached或membase来跟踪。如果您使用memcaced,您可能希望实现它,以便每次投票都会更新memcached中的一个计数器,同时添加一个日志条目,该条目将汇总到一个MySQL合并记录中。这样做的好处是,您将保持MySQL作为主源,它可以以任何速度赶上--也就是说,即使它在缓存中落后几分钟,也没有太大关系。当您尝试更新memcached副本时,如果您fidn它不在memcache中,您只需从MySQL获取计数,您将不会有99.99%的同步计数,这将足以在使用率达到40票时实现弹出窗口。
然而,如果你希望每小时只得到几个空洞的投票,那么你可能只想使用MySQL,而不需要任何缓存和缩放手段。
https://stackoverflow.com/questions/6838556
复制相似问题