Пользователь вошел на сайт PHP> Я перезагружаю Apache> Пользователь должен снова войти в систему.
Как это предотвратить? (Я не хочу, чтобы пользователь должен был снова войти в систему)
Пользователь вошел на сайт PHP> Я перезагружаю Apache> Пользователь должен снова войти в систему.
Как это предотвратить? (Я не хочу, чтобы пользователь должен был снова войти в систему)
Ответы:
Хранение маркера сеанса в другом месте в качестве резервной копии предотвратит эту проблему. Вы по-прежнему можете хранить свою основную информацию $_SESSION
, но хранить резервный токен в:
Вы можете найти некоторую помощь в этом вопросе StackOverflow: лучшие практики для тайм-аутов сессии и постоянный вход в php .
Ваши данные сеанса не должны быть потеряны только потому, что Apache выключен или перезапущен, если только данные сеанса не сохраняются в памяти и не сохраняются на диск (файловой системой или базой данных). В противном случае вы могли бы перезапустить весь сервер, и сеанс все равно продолжится. Данные сеанса предназначены для длительного хранения. Единственный раз, когда сеанс потерян, если:
SID потерян. Данные сеанса все еще существуют на стороне сервера, но клиент не может восстановить SID, поэтому не может повторно инициировать тот же сеанс. Это может произойти, если срок действия файла cookie SID истекает (если это файл cookie) или ссылки на сеанс теряются (если SID является параметром URL) или SID сбрасывается на стороне сервера или изменяется без уведомления клиента.
Данные сеанса удаляются на стороне сервера. Обычно это происходит, когда PHP Session Garbage Collector запускается и видит, что файл сессии старше, чем session.gc_maxlifetime (по умолчанию это 24 минуты). В противном случае это может произойти, если приложение явно удалит сеанс . На некоторых серверах администратор также может настроить cronjob для регулярной очистки старых данных сеанса.
Это стало возможным благодаря использованию правильного аргумента с Apache:
apache2ctl -k graceful
Apache перезапустится без потери текущих сеансов.