Sql 在游戏中每分钟增加用户健康的最佳方法

Sql 在游戏中每分钟增加用户健康的最佳方法,sql,ruby-on-rails,Sql,Ruby On Rails,在之前的PHP应用程序中,我使用了cron作业,每10分钟在SQL中增加一个用户的运行状况,cron作业脚本增加所有用户的运行状况 在我的下一个应用程序中,我尝试使用MySQL事件为每个用户每分钟增加一次运行状况,但在一段时间后遇到了一些问题() 如果我要在RubyonRails中创建一个新的应用程序,那么最好的方法是什么?我愿意使用MySQL或PostgreSQL 这是一款游戏,在游戏中,用户会互相争斗并失去健康 编辑:有时用户会遇到另一个用户,我需要根据他们的健康状况和其他因素来选择该用户。

在之前的PHP应用程序中,我使用了cron作业,每10分钟在SQL中增加一个用户的运行状况,cron作业脚本增加所有用户的运行状况

在我的下一个应用程序中,我尝试使用MySQL事件为每个用户每分钟增加一次运行状况,但在一段时间后遇到了一些问题()

如果我要在RubyonRails中创建一个新的应用程序,那么最好的方法是什么?我愿意使用MySQL或PostgreSQL

这是一款游戏,在游戏中,用户会互相争斗并失去健康


编辑:有时用户会遇到另一个用户,我需要根据他们的健康状况和其他因素来选择该用户。所以我需要数据库中存储的实际健康状况。

我会创建一个rake任务,将所有用户的健康状况提高10,并使用awesome每10分钟调用一次

更新


然而,正如Dan在评论中所说,如果你能在每个用户请求时更新他们的健康状况,那么每10秒进行一次如此巨大的数据库更新(特别是如果你有大量用户的话)可能是低效的。但这取决于你的游戏的实际运作方式。

如果每分钟有10点的生命值波动,正确的修正是一个生命值变量和上一次设置的时间戳。然后select语句将显示“生命点+分钟(现在-时间戳)*10”。将其转换为SQL留给读者作为练习。

不是每10分钟更新数据库中的每条记录,而是将上次修改的时间戳存储在与运行状况相同的行中。每次从数据库读取玩家健康状况时,将(当前时间-上次修改)/(10分钟)添加到该值。每次你将玩家健康写入数据库时,都要更新上次修改的健康状况。

如果可以的话,我会尽量避免这样做。您是否可以通过存储何时保存运行状况值并根据已过的分钟数对其进行调整来解决您的问题?只是想弄清楚:无论何时Ruby DSL都适用于cron,因此如果您在选择cron路径时使用它。@zwippie我想他的问题不是他不想使用cronjobs,但他不知道如何让它们与rails协同工作,这是可能的,我的评论只是补充说,无论何时使用cron,他都不应该避免cron或其他任何东西。