#php #codeigniter #session #session-state #web-testing
#php #codeigniter #сессия #состояние сеанса #веб-тестирование
Вопрос:
У меня есть веб-сайт с живыми опросами, на котором тысячи пользователей проходят тесты, во время входа на сайт. Иногда несколько пользователей сообщают, что результаты их опроса не отправляются, а в отчетах об ошибках их имена пользователей не отображаются, что наводит нас на мысль, что это проблема сеанса.
Если сеансы истекают, мы рассматриваем варианты, которые будут выполнять все следующие действия:
а) предотвратить истечение срока действия сеансов
б) не снижать производительность приложения
c) не истощать память (наличие ненужных открытых сеансов)
# 1 Одним из вариантов было сделать следующее в config.php :
$config['sess_expiration'] = 0. It is currently 7200.
Я где-то читал, что такие приложения, как facebook, делают это, но это также означает, что у вас потенциально открыто огромное количество ненужных сеансов. Для приложения нашего размера это лучший вариант?
# 2 Создайте всплывающее окно, уведомляющее пользователя о том, что срок действия их сеанса истекает.
Проблема с этим, насколько я понимаю, заключается в том, что будут выполняться вызовы сервера, и наряду со всеми другими вещами, происходящими на сайте (он сильно зависит от базы данных), это приведет к снижению производительности. Кроме того, кажется очевидным, что если пользователь активен, срок действия сеанса не истечет, а если нет, он не увидит сообщение — так есть ли смысл?
# 3 Проверка, чтобы увидеть, есть ли где-то в коде, который каким-то образом убивает сеанс (не уверен, как это сделать).
Мне нужны некоторые комментарии с продуманными объяснениями по предложенным выше решениям или для дополнительных предложений и реализаций, которые мы пропустили.
В настоящее время, как уже упоминалось, несколько пользователей, похоже, не осознают, что они вышли из системы, проходят тест, а затем обнаруживают, что у них нет результатов при отправке. Мы не банковский веб-сайт, поэтому идея о том, что кто-то может войти в систему, пока пользователь отсутствует, не является нашей самой большой проблемой ….. имея это в виду — есть предложения?
Комментарии:
1. В вашем случае лучше переключиться на сеанс без остановки, используя аутентификацию токена, например, JWT, или используя уже предоставленную услугу, такую как Oauth …
2. Не могли бы вы объяснить это более подробно и подробно в предлагаемом ответе, пожалуйста? Сроки реализации и другие контрольные точки, а также рабочее понимание, стоящее за этим.
3. таким образом, в основном JWT допускает аутентификацию и подписанную передачу информации БЕЗ сеансов? Из краткого чтения кажется, что у вас будет аналогичная ситуация с tokens…as в них нельзя / не следует хранить дольше, чем необходимо и т.д.
4. да , но это предотвращает сохранение сеанса на стороне сервера . и я думаю, что викторина больше не будет занимать 1 час времени :),
5. Как вы думаете, сколько времени потребуется для реализации предлагаемого вами решения JWT в существующем веб-приложении?