PHP сессия истекает автоматически ровно через 120 секунд

Я управляю сеансом пользователя с помощью одного файла конфигурации, включенного в каждую страницу. У меня есть опция входа / выхода на моем сайте.

Я хочу продлить тайм-аут уничтожения сеанса пользователя до 1 года (даже когда пользователь закрывает свой браузер, сеанс должен оставаться там, пока пользователь не выйдет из страницы).

я использую это для увеличения значения времени ожидания сеанса пользователя,

<?php

session_set_cookie_params(31556952);

ini_set('session.gc_maxlifetime',31556952);

session_start();

//my Other code like DB connections will come below.

?>

и в php.ini

Я поставил session.gc_maxlifetime в 31556952

Но это ни на что не влияет, пользовательский сеанс уничтожается ровно за 120 секунд.

Я ссылался на все вопросы, связанные со стековым потоком, но я не получил никакой подсказки.

В чем будет проблема? какие-либо предложения.

1

Решение

Я могу думать о нескольких вещах, но это может быть вызвано многими вещами. Вы проверили INI-файл, чтобы убедиться, что все в порядке. У меня была такая проблема раньше, оказывается, у меня на сервере было установлено 2 версии PHP. Я модифицировал неправильный INI-файл. Убедитесь, что версия php, которую вы используете, принадлежит к ini, с которой вы работаете.

Иногда выполнение наборов ini в файле php не работает для меня. Никогда не понимал почему. Когда это происходит, добавьте записи в файл htaccess, чтобы убедиться, что apache их забирает. таймаут сессии в коде php и в htaccess?

Последнее немного сложнее найти. Постарайтесь на 100% убедиться, что вы не уничтожаете сессию где-либо. Тот факт, что это жесткие 120 секунд, может показаться, что это сервер, но убедитесь, что вы не вызываете какой-то скрипт с ajax через 120 секунд, и по какой-то причине этот скрипт убивает сеанс.

0

Другие решения

Есть пара вещей, которые могут вас испортить

  1. Если другой скрипт где-то имеет другое значение для session.gc_maxlifetime и оба сценария совместно используют одно и то же место для сохранения данных сеанса, тогда более низкое значение будет преобладать. Если это ваша ситуация, вы должны сохранять сеансы в произвольном месте, чтобы любой сценарий, который устанавливает меньшее время жизни, больше не конфликтовал с этим сценарием. Вы можете сделать это, позвонив ini_set('session.savepath',NEWPATH), Для деталей, посмотреть документы.
  2. На некоторых системах Debian session.gc_maxlifetime во время выполнения не имеет никакого эффекта. Лучше всего изменить его в себе php.ini файл. Это было сообщили здесь.

С учетом того, что вы хотите, чтобы сеанс длился много месяцев, я, вероятно, использовал бы базу данных для хранения файлов cookie для входа.

0

Мне кажется, вам нужно установить время сеанса вместе с set-cookie с той же продолжительностью.

-2
По вопросам рекламы [email protected]