Как рассчитать время, оставшееся в сценарии обратного отсчета - PullRequest
0 голосов
/ 14 сентября 2010

У нас есть требование вести обратный отсчет, основываясь на том, что пользователь проходит тест. Как лучше всего отслеживать время, затраченное пользователем на прохождение теста.

Мы фиксируем время начала, время окончания. Но вычисления идут не так, как надо, если сервер приложений или ОС не работают во время теста. Мы думали об использовании другой переменной для хранения текущего времени после того, как пользователь отправит ответ на вопрос. Таким образом (время окончания - текущее время) будет разумно учитывать оставшееся время.

Существует ли эффективный способ расчета "оставшегося времени" в таких случаях, кроме упомянутого выше?

Мы бы хотели, чтобы решение было максимально независимым от базы данных

Ответы [ 2 ]

3 голосов
/ 14 сентября 2010

Если быть точным, я продолжу с MYSQL.

Как вы могли заявить, вы зафиксировали время начала. Когда тест загружен пользователем, запишите эту метку времени в поле DATETIME. Другой вариант - это использование UNIX_STAMP. И затем, когда пользователь отправляет ответ, вы можете легко поместить эти данные в другое поле DATETIME.

Как и другие системы rdbms, mysql получил функции манипуляции с датой и временем.

SELECT CURRENT_TIMESTAMP (); запрос возвращает текущую метку времени. например. '2007-12-15 23: 50: 26'

SELECT UNIX_TIMESTAMP (); запрос возвращает текущую метку времени Unix, которая может быть легко рассчитать разницу. например. 1111885200

Также у нас есть функции DATE_SUB () и DATE_ADD () для сложения, вычитания.

Пожалуйста, посетите страницу Руководство по дате и времени для подробностей. Я думаю, что эта информация приведет вас к правильному решению.

- Добавлено 18 сентября:

Вы можете использовать javascript для отслеживания поведения пользователя. Например, функция вызывает скрипт на стороне сервера с солью или чем-то, что у вас есть в сеансе. Этот серверный скрипт записывает текущую метку времени как «последнее обновление». Части базы данных такие же, как указано выше.

0 голосов
/ 28 октября 2012

Я написал такой набор экзаменов, используя таймер обратного отсчета.К сожалению, были случаи, когда в компьютерной лаборатории часто происходили перебои с питанием, поэтому мне пришлось добавить код, чтобы справиться с этим.По сути, программа экзамена сохраняет свое состояние (ответы и прошедшее время) в файле .ini каждые 30 секунд.Когда программа экзамена запускается, она проверяет, существует ли такой INI-файл - если так, то он продолжает с того места, где программа прекратилась (с точки зрения того, на какие вопросы еще предстоит ответить и как долго остается), иначе программа начинается заново.

Чтобы сделать экзамены автономными и, следовательно, независимыми от любого сервера, все вопросы и варианты были экспортированы в файл ресурсов, который затем был включен в сборку самого экзамена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...