2010-11-20 2 views
2

У меня есть веб-приложение, которое каждую минуту проверяет базу данных для проверки новых записей. Страница предназначена для того, чтобы не иметь никакого взаимодействия с ... Вы просто держите ее открытой, и она отображает вещи. Страница защищена паролем, и сайт может быть в купе дней без щелчка в веб-браузере или что-то еще. Я обнаружил, что после того, как он закончил день или около того, он прекратил проверку базы данных (через запрос Ajax), а затем, если вы обновите страницу вручную, она снова приведет вас на страницу входа в систему. Я предполагаю, что это связано с тем, что сессия, у которой есть логин, истекает. Я никогда не устанавливал время истечения срока действия, но действительно ли PHP автоматически уничтожает сеансы через определенное количество времени? Что мне делать, чтобы исправить это?Какое время истечения срока действия сеанса по умолчанию в PHP?

Благодаря

Спасибо за все ответы ... Есть ли способ, чтобы установить сеанс никогда не истекает с вне только изменяя PHP сами настройки?

ответ

7

Значение по умолчанию session.gc_maxlifetime составляет 1440 секунд. Поэтому сборщик мусора предполагает, что сеанс истекает, когда последняя модификация была по крайней мере 1440 секунд назад.

Обратите внимание, что при использовании файла cookie для идентификатора сеанса он может иметь разные lifetime. Значение по умолчанию 0 из session.cookie_lifetime делает cookie сеансовым cookie, это означает, что он истекает, когда сеанс браузера завершен (т. Е. Браузер закрыт).

См. Также my answer on How do I expire a PHP session after 30 minutes? для получения дополнительной информации о сроке окончания сессии.

1

От php.ini:

; Время жизни в секундах файла cookie или, если 0, до перезапуска браузера. ; http://php.net/session.cookie-lifetime session.cookie_lifetime = 0

Это было бы по умолчанию, если я не ошибаюсь. Либо установите его на ноль (если он еще не установлен), либо просто используйте другой файл cookie.

Смежные вопросы