我对文章有投票制度。文章存储在“stories”表中,所有投票存储在“vots”表中。“stories”表中的id等于“vots”表中的item_name(因此,每次投票都与item_name的文章相关)。
我想这样做,当投票总数达到10时,它会将“stories”表中的“showing”字段更新为值“1”。
我正在考虑设置一个cron作业,它每小时运行一次,检查所有显示为0的帖子。如果showing=0,则它将汇总与该文章相关的投票,如果sum of vots>=10,则设置showing=1。我不确定它是否有效,因为它可能占用大量服务器资源,不确定。
那么有谁能建议一个可以完成这项任务的cron工作呢?
以下是我的数据库结构:
故事表
投票表
编辑:
例如“stories”表中的此行:
内径12
作者姓名
st|u日期|故事日期
故事标题
故事类
圣体|故事体
显示| 0表示未证明,1表示已批准
这一行与“投票”表中的这一行相关
内径| 83
物品名称12(物品编号)
投票| 1票赞成-1票反对
...

最佳答案

两件事:
为什么在投票表中命名item_name列,而实际上它是项目表的id?我建议在article表中匹配它,因为它是int(11)与var_char(255)。此外,还应该向vots表添加外键约束,这样,如果删除了某篇文章,就不会孤立vots表中的一行。
为什么vote_value列是int(11)?如果它只能是两个状态(1或-1),则可以执行tinyint(1)signed(对于-1)。
投票表中的ip列有点令人担忧。如果你是通过ip来管理“唯一”投票,你有没有考虑代理ip?类似这样的事情应该在帐户级别处理,这样来自同一代理IP的几个用户就可以发出单独的投票。
我不会做cronjob来确定showing列应该标记为0还是1。相反,每当有人投票反对这篇文章时,我都会发布一个计票结果。所以,如果有人投了赞成票或反对票,计算出故事的新值,并将其存储在缓存中以备将来阅读。

07-24 09:20