从概念上讲,如何使用 PHP 和 MySQL 为网站编写一个成就系统?
唯一真正的方法是不断执行 MySQL 查询来测试成绩等吗?
您有两个选择,并且很可能可以将它们结合起来:
您可以有一个每 X 分钟运行一次的 cron 作业,并运行数据库来查看每个用户并检查他们是否应该获得新徽章。
例如,StackOverflow 为 Nice Answer 徽章实现了此功能。每次运行时,它都会检查您有多少个 +10 赞成票的答案,并查看是否需要向您授予另一个徽章。 (它看到 5 个帖子,有 10 个赞成票和 4 个好答案徽章,您将获得一个徽章)。 Jeff 已经说过,这意味着如果您得到的答案获得 10 票,然后被否决,然后另一个帖子获得 10 票,您将不会获得徽章。
第二个选项是基于事件的触发器。其实很简单:
$badgeSystem->giveBadge("Some Badge Name", $User_ID);
这可用于您知道正在发生的事件。就像自传作家徽章一样。除非按下提交按钮,否则用户很可能不会填写他的个人资料,因此网站可以检查用户是否填写了全部内容,如果他们填写了,并且仍然需要徽章,他们就会得到它。
cron 作业应该用于不断检查的操作。诸如定量目标之类的事情,例如访问网站 150 天或编辑 500 次。
仅当用户执行特定操作(例如提交表单)时才会发生事件时,应该发生基于事件的触发器。
(您可以在几乎任何情况下使用其中任何一个。不过,基于事件的触发器可以提供更快的反馈......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)