如果进程开启打开一个定时器(20s) 轮询查mysql roomId 通过roomId查询reids对应房间详情 怎么能做到没有时间差
用户进入考试开启2小时定时任务,命中条件销毁。 房间的定时器该怎么设置,如果有一百场考试 是通过进程的轮询定时器去查询是否有新创建的房间 针对每个房间开启一个对应的定时器吗?
定时器过多会不会影响效率
用消息队列,延时处理
感谢 用户参与考试的话就是用 用户定时器就可以吧
用队列好点
好的
用户进入试卷答题,时间为1小时,1小时后。自动提交的话,是不是需要把用户前面已经做好的题要提交过去,不然用户就是0分了
这里假如完全由后台来判断的话,是不是获取不到用户已经做好的答案,是不是不太合理
可以用缓存来保存用户每次的答题记录,这样最后结算的时候从内存里拿去也会快一些 ,最后再统一入库
哦,实时保存答案,用户做一道题前端就提交过来保存嘛
我是这么考虑的 参与考试,查询队列是否有该场考试,如果没有,计算考试倒计时push队列,同步开始用户倒计时push到队列 倒计时结束socket推送前端强制提交 用户选择一次,提交一次问题、答案 判断对错然后存入redis 考试结束,pop reids该场考试数据 逐步入库
开始与截止时间已明确,前后端都对时间做判断,大于截止时间不允许答题
1和2可以互补
前端的时间 只是呈现给用户的 并不能取做任何功能使用 可以篡改的
前端是辅助效果,后端也要检验的
用消息队列,延时处理
感谢 用户参与考试的话就是用 用户定时器就可以吧
用队列好点
好的
用户进入试卷答题,时间为1小时,1小时后。自动提交的话,是不是需要把用户前面已经做好的题要提交过去,不然用户就是0分了
这里假如完全由后台来判断的话,是不是获取不到用户已经做好的答案,是不是不太合理
可以用缓存来保存用户每次的答题记录,这样最后结算的时候从内存里拿去也会快一些 ,最后再统一入库
哦,实时保存答案,用户做一道题前端就提交过来保存嘛
我是这么考虑的
参与考试,查询队列是否有该场考试,如果没有,计算考试倒计时push队列,同步开始用户倒计时push到队列
倒计时结束socket推送前端强制提交
用户选择一次,提交一次问题、答案 判断对错然后存入redis
考试结束,pop reids该场考试数据 逐步入库
前提
开始与截止时间已明确,前后端都对时间做判断,大于截止时间不允许答题
做法
1和2可以互补
前端的时间 只是呈现给用户的 并不能取做任何功能使用 可以篡改的
前端是辅助效果,后端也要检验的