我应该如何最好地跟踪页面请求之间的计时器


How best should I keep track of a timer between page requests?

我正在用PHP编写一个web应用程序,让用户参加模拟考试(多选题)。

考试是定时的,例如30分钟。我不确定跟踪用户完成考试的最佳方法是什么。每个问题都是从MySQL数据库中提取的,并作为新页面提供给用户。

我应该用Javascript(例如setInterval)在第一页启动计时器,然后在检索下一页之前,每当提交问题时将其POST到服务器吗?有没有一种更优雅或更有效的方法可以做到这一点?

假设他们有30分钟的时间进行整个测试,并且没有休息时间,我会在他们单击开始时存储一个时间戳。

$_SESSION['start_time'] = time(true);

然后,当它们出现在页面上时,您可以通过ajax进行轮询,也可以通过setInterval() 设置运行倒计时的javascript变量

<script>
var elapsedTime = <?=time(true) - $_SESSION['start_time'] ?>`;
var timer = setTimeout(function () {
   if (elapsedTime > 30 * 6) {
      clearInterval(timer);
      alert('game over');
   }
   elapsedTime += 1;
}, 1000);

创建一个表,存储测试到用户的关联,并在测试不再有效时在其中放置一个时间。这将允许查询和了解学生的剩余时间,并在不允许的情况下阻止人们重新尝试测试。

我会将开始时间存储在cookie中,到期时间设置为30*60 secs

请参阅php.net