2015-06-24 2 views
0

Привет, мы разрабатываем сайт для студентов для проведения онлайн-тестов. Мы работаем над PHP My SQL. Вопросы всех тестов хранятся в таблице с тестом test_id, связанным с тестом. Проблема: Теперь, когда вопросы тестов загружаются с сервера, он иногда занимает время при загрузке. Поскольку эти тесты проходят TIMED (онлайн-тесты), значит, тестировщик чувствует, что его время тратится впустую.Онлайн-платформа для тестирования

Время загрузки может быть результатом
медленное подключение к интернету Databse поиск Вопрос/s Каков наилучший способ дать опыт jerkless к экзаменуемого независимо от его скорости интернета и конфигурации ПК.

ответ

1

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

Устранение медленного соединения пользователя невозможно; если вы измеряете время на клиенте, чтобы попытаться избежать этого, вы откроете его для обмана (клиент может взломать javascript, чтобы представить ложное время).

Однако вы можете исключить время запроса базы данных: настроить сервер websocket, подключить к нему пользователя при запуске теста, заранее загрузить все вопросы на сервере в очередь и когда пользователь запросит вопрос, немедленно записать текущее время и отправить следующий вопрос из очереди через соединение с веб-сокет.

Также убедитесь, что после получения вопроса клиентская сторона JS отображает его немедленно и не требует, например, сделайте дальнейшие вызовы или запросы AJAX, прежде чем он сможет их отобразить. Если требуется дополнительная информация, это должно быть проверено вашим сервером веб-узлов и связано с вопросом.

Посредством этого вы сможете получить время отклика ниже 50 мс, если у пользователя есть приличное интернет-соединение и находится в той же стране, что и ваш сервер websocket.

+0

Thansk для ответа нет есть ограничение времени на тест на приемник не по индивидуальным вопросам –

+0

Снова !!! не предваряйте предварительную загрузку всех вопросов, которые будут выполняться на стороне клиента. –

0

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

Чтобы исключить проблемы с временем выполнения теста, я бы рекомендовал загрузить все вопросы до того, как время начнет работать. Затем все данные могут быть сохранены в клиентах local storage (см. this link для получения дополнительной информации) - но учтите, что это будет работать, только если браузер поддерживает локальное хранилище.

Другая возможность - загрузить/сгенерировать все данные и иметь кеш-сервер (например, memcached или простой файловый кеш). При каждом новом действии этот кеш может быть запрошен без запроса всех данных из базы данных. Разумеется, это ускорит процесс, если проблемы с производительностью будут длительными запросами, скоростью базы данных и т. Д. - если интернет-соединение в Интернете слишком медленное.

+0

Еще раз спасибо! Вы показали нам путь. Сначала мы попробуем HTML 5, а затем Memcached. –

+0

Рад, что я мог бы помочь ;-) Пожалуйста, не забудьте отметить ответ как принятый, если он вам помог! – dhh

+0

Привет, я могу сохранить все вопросы в самой сессии, так как нам это не нужно. Затем мы запускаем тест только один раз, когда загрузка всех вопросов выполняется в сеансе на стороне клиента. –

Смежные вопросы