Почему сеанс PHP удаляется при перезагрузке страницы?

Итак, у меня такая проблема: когда я какое-то время ничего не делаю на странице, после перезагрузки страница $_SESSION очищается. Я проверил код, и в нем нет никаких функций unset() или чего-либо еще, что могло бы очистить переменную $_SESSION. Есть идеи, почему это происходит?

Редактировать: Что мне делать, если я хочу, чтобы сеанс работал до закрытия браузера? Я не понимаю этого, так как gc проверяет, истек ли срок действия сеанса session_start, но я не могу изменить данные сеанса перед вызовом session_start, поэтому изменение данных сеанса после вызова session_start все равно приведет к просроченному сеансу?

У меня session.cookie_lifetime по умолчанию установлено на 0, session.gc_maxlifetime, session.gc_divisor, session.gc_probability также установлены на значения по умолчанию.


person Rihards    schedule 03.02.2011    source источник
comment
Какое значение имеет session.gc_maxlifetime и вы понимаете мой пост о том, как работает модель истечения сеанса PHP?   -  person Gumbo    schedule 03.02.2011
comment
@Gumbo, для session.gc_maxlifetime по умолчанию установлено значение 1440. Думаю, да, да. Я также установил для них значения по умолчанию для session.gc_probability и session.gc_divisor.   -  person Rihards    schedule 03.02.2011
comment
@Richards: И это расплывчатое время простоя не эти 1440 секунд? Помните, что сборщик мусора PHP по умолчанию вычисляет возраст на основе времени модификации файла сеанса.   -  person Gumbo    schedule 04.02.2011
comment
@Gumbo, но мой вопрос: как сбросить таймер сборщика мусора для сеанса, чтобы он не стирал сеанс? Я не понимаю, потому что сборщик мусора выполняет свою работу, когда вызывается session_start(), но я не могу изменить данные сеанса перед вызовом session_start().   -  person Rihards    schedule 04.02.2011
comment
@Richards: Вы не можете сбросить его, потому что нет таймера. Именно возраст данных сеанса (то есть время его последней модификации) в сочетании со значением session.gc_maxlifetime определяет, истек ли срок действия сеанса. Сборщик мусора — это просто процедура, которая удаляет такие сеансы. И когда это происходит, сессия уже истекла.   -  person Gumbo    schedule 04.02.2011
comment
@Gumbo, так что, чтобы решить эту проблему, мне просто нужно увеличить session.gc_maxlifetime до большего?   -  person Rihards    schedule 09.02.2011
comment
@ Гамбо, какая будет безопасная жизнь? Я имею в виду не перегружать вещи и так далее? На что он у вас настроен?   -  person Rihards    schedule 09.02.2011
comment
@Richards: Это зависит от цели вашего сеанса. Так зачем он вам нужен и каковы будут последствия преждевременного истечения?   -  person Gumbo    schedule 09.02.2011


Ответы (1)


Вы поставили session_start() в начале каждой страницы?

person raultm    schedule 03.02.2011
comment
Да, на каждой странице. Session_destory() не используется. - person Rihards; 03.02.2011
comment
проблема session_start() очень распространена. Я ищу документацию о тайм-ауте сеанса. - person raultm; 03.02.2011
comment
prajapatinilesh.wordpress.com/2009 /01/14/ Можешь посмотреть? - person raultm; 03.02.2011
comment
Он показал: строка (4) 1440 после распечатки всей жизни. Это хорошо? - person Rihards; 03.02.2011
comment
это означает, что 1440/60 = 24 минуты сеанса ОС - person raultm; 03.02.2011