问题描述
举例来说,比如用户A,做了事情B,然后这个事情会在X小时之后让用户A获得某些经验之类的。要求是X小时后,无论用户A是否在线,该行为效果都能够产生。问题补充:我说的这个定时是属于动态定时的。相当于用户要触发了某个动作才会开始计时,然后直到时间结束产生某个效果。
解决方案
这个好实现的很!靠数据库的记录和一个定时的任务调度来实现。用户A,做了事情B,你就向Things表中插入一条记录,保存起来,那个created_at字段记下了用户A这事情B时的准确时间。现在搞一个后台任务定时执行一个时间检查(如每10分钟执行一次),将当前时间与数据表中的那个记录的created_at对比,看结果是否是大于或者等于X小时,如果是就让用户A获得某些经验之类的思路很清析啊,对比这个任务调度,有rails自带的runner,还有backgroundRD什么的,记不得名字了,就是一个在后台不断执行的程序而已,这东西有点像java中的Timmer或者Quter什么的。
解决方案二:
在 lib 中写 robot.rbclass Robot def self.do xxx endend定时ruby script/runner Robot.do
时间: 2024-10-06 19:16:10