Приложение для проверки: лучший способ остановить истекающие сеансы (codeigniter, PHP)

#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 в существующем веб-приложении?