Я управляю сеансом пользователя с помощью одного файла конфигурации, включенного в каждую страницу. У меня есть опция входа / выхода на моем сайте.
Я хочу продлить тайм-аут уничтожения сеанса пользователя до 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 секунд.
Я ссылался на все вопросы, связанные со стековым потоком, но я не получил никакой подсказки.
В чем будет проблема? какие-либо предложения.
Я могу думать о нескольких вещах, но это может быть вызвано многими вещами. Вы проверили INI-файл, чтобы убедиться, что все в порядке. У меня была такая проблема раньше, оказывается, у меня на сервере было установлено 2 версии PHP. Я модифицировал неправильный INI-файл. Убедитесь, что версия php, которую вы используете, принадлежит к ini, с которой вы работаете.
Иногда выполнение наборов ini в файле php не работает для меня. Никогда не понимал почему. Когда это происходит, добавьте записи в файл htaccess, чтобы убедиться, что apache их забирает. таймаут сессии в коде php и в htaccess?
Последнее немного сложнее найти. Постарайтесь на 100% убедиться, что вы не уничтожаете сессию где-либо. Тот факт, что это жесткие 120 секунд, может показаться, что это сервер, но убедитесь, что вы не вызываете какой-то скрипт с ajax через 120 секунд, и по какой-то причине этот скрипт убивает сеанс.
Есть пара вещей, которые могут вас испортить
session.gc_maxlifetime
и оба сценария совместно используют одно и то же место для сохранения данных сеанса, тогда более низкое значение будет преобладать. Если это ваша ситуация, вы должны сохранять сеансы в произвольном месте, чтобы любой сценарий, который устанавливает меньшее время жизни, больше не конфликтовал с этим сценарием. Вы можете сделать это, позвонив ini_set('session.savepath',NEWPATH)
, Для деталей, посмотреть документы.session.gc_maxlifetime
во время выполнения не имеет никакого эффекта. Лучше всего изменить его в себе php.ini
файл. Это было сообщили здесь.С учетом того, что вы хотите, чтобы сеанс длился много месяцев, я, вероятно, использовал бы базу данных для хранения файлов cookie для входа.
Мне кажется, вам нужно установить время сеанса вместе с set-cookie с той же продолжительностью.