从概念上讲,如何使用PHP和MySQL为网站编写成就系统?
唯一真正的做法是不断进行MySQL查询以测试成就等吗?
答案 0 :(得分:15)
您有两种选择,最有可能将它们组合在一起:
您可以拥有一个每X分钟运行一次的cron-job,并在数据库上运行,查看每个用户并检查他们是否应该获得新徽章。
例如,StackOverflow为Nice Answer徽章实现了这一点。每次运行时,它都会检查您拥有+10个投票的答案数量,并查看是否需要获得另一个徽章。 (它看到5个帖子有10个upvotes和4个Nice Answer Badges,你会得到一个徽章)。杰夫已经表示,这意味着如果你得到一个得到10票,然后投票,然后另一个帖子获得10票的答案,你就不会获得徽章。
第二个选项是基于事件的触发器。这真的很简单:
$badgeSystem->giveBadge("Some Badge Name", $User_ID);
这可用于您知道正在发生的事件。就像Autobiographer徽章一样。除非按下提交按钮,否则用户将无法填写他的个人资料,因此网站可以检查用户是否填写了整个内容,如果他们有,并且他们仍然需要徽章,他们就会得到它。
cron-job应该用于经常检查的操作。比如定量目标,比如访问网站150天,或编辑500次。
只有在用户执行特定操作(例如提交表单)时才会发生事件,才会发生基于事件的触发器。
(你几乎可以在任何情况下使用。基于事件的触发器可以提供更快的反馈......)
答案 1 :(得分:2)
另一种选择是使用来自游戏化平台公司的API,例如http://iactionable.com
答案 2 :(得分:1)