java – 如果在线检查期间发生电源故障,我们如何更新用户再次登录门户时剩余的时间?

我正在进行一个项目在线考试只是为了获得知识.
可能存在电源故障的情况,并且当候选人再次登录时,必须给出在电源故障期间浪费的时间.但是在我的javascript代码中,考试在服务器时间相应的2小时后结束(此处使用AJAX).时间结束后,学生将被重定向到主页.我想到了一个解决方案,但我没有找到实现它的开始.

As the session is maintained,so I can maintain the time he used from
2 hours and can be stored in database. when he relogin then that
particular row which corresponds to him can be checked and the time
can be updated.

但我无法实现它.请告诉我是否有其他解决方案或我认为的方向是对还是错.

考试时钟从2小时开始恢复.当电力故障出现时,它不会从正在滴答作响的时间恢复.在这种情况下,无论是发生电源故障还是候选人再次重新登录,都是一样的.我不是要求任何代码来解决这个问题.我只想要一个我能想到的暗示或方向.我只是想知道它背后的概念是什么.

最佳答案
将问题形式化:

>用户登录并在t0开始他们的考试.他们的考试在t120结束.
>在考试结束前的某个时间点(考试前x分钟)(tx)出现电源故障,正在测试的人必须恢复考试.
>在tx之后的某个时刻,系统重新上线.
>在ty之后或之后的某个时刻,用户再次登录,将其称为tz.正如您所指出的,这等于ty.
>他们有权再花120到x分钟来完成考试.考试结束的时间点现在为tz(120 – x).

可能解决方案

最初想到了一种非常面向会话的方法,但这可能是要走的路:

>使用句点p实现系统范围的时钟(想想“心跳”).对于系统启动的每个间隔p,递增全局计数器.
>将t0记录为每次检查的全局计数器.
>在另一行中,更新检查所用的时间.这是t0的当前值.在您的代码中,您可能具有保存正在进行的工作的功能,并在那里更新已用时间.还要更新每个页面/部分加载的已用时间.请注意,如果在上次经过的时间更新/进行中保存之间丢失了一些工作,那么他们将从那时起“返回”,因为他们上次过去的更新从未存储过.
>区间p将是一项政策决定.理论上,根据失败的时间,有人可以获得额外的p来完成考试.如果p是1秒,这不是什么大问题.如果是5分钟,这是一个更大的交易.当然,对于p的不同值,将存在性能权衡.此外,由于我们在这里没有处理实时系统,因此可能存在一些偏差.
>使用事务处理所有事情.当系统恢复时(并且在全局时钟再次开始滴答之前),任何中断的事务都需要回滚.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)