Сбор мусора сеанса PHP становится раздражающим, мне нужна помощь, чтобы изменить это поведение

У меня была эта проблема в течение некоторого времени, я точно не знаю, что если это проблема, но я вполне уверен, что это так, срок действия моего сеанса запоминания истекает через 1 неделю, но когда я иду на свой сайт после нескольких часов бездействия мой сеанс «запомнить меня» исчез, я проверяю каталог tmp моего сервера, и плоский файл сеанса исчез, я думаю, что происходит то, что время от времени запускается какой-то сборщик мусора сеанса PHP, но я не хочу, чтобы это удалить эти сеансы, которые должны храниться в течение недели, как изменить это поведение?


person Abdullah Khan    schedule 27.07.2010    source источник
comment
Установите его, используя файл cookie, а не переменную сеанса. Если пользователь закроет свой браузер, он все равно исчезнет.   -  person phidah    schedule 27.07.2010


Ответы (1)


Вы путаете две вещи.

  • Механизм «запомнить меня» не зависит от сеансов. Он использует файл cookie, в котором хранятся учетные данные, используемые для запуска сеанса. В этом случае вы должны настроить файл cookie так, чтобы он сохранялся в течение одной недели. См. этот ответ.
  • Если вы просто хотите продлить время жизни сеансов, вам нужно как продлить время жизни файла cookie сеанса до одной недели, так и отложить сборку мусора. Это делается путем изменения session.gc_maxlifetime.
person Artefacto    schedule 27.07.2010
comment
Вот довольно хороший предыдущий вопрос о функции "Запомнить меня" и о том, как ее реализовать. а также отдельный файл cookie. - person Charles; 27.07.2010
comment
Хорошо, если это так, то я вижу файл cookie, установленный php, он говорит, что срок его действия истечет через 7 дней, но даже если файлы cookie сеанса существуют, почему он не инициализирует сеанс снова, я имею в виду у меня есть файл cookie, и он будет оставаться там в течение следующих 7 дней, но когда я захожу на сайт с этим файлом cookie, я все еще пытаюсь войти в систему, .. какие-либо мысли? - person Abdullah Khan; 27.07.2010
comment
@Charles, о, привет, спасибо, что снова помог, твое последнее объяснение открыло глаза - person Abdullah Khan; 27.07.2010
comment
@Akay Если этот файл cookie является файлом cookie сеанса, установленным PHP с помощью session_start/session_set_cookie_params, существования самого файла cookie недостаточно, если PHP затем удаляет данные, связанные с сеансом, посредством сборки мусора. Если файл cookie на самом деле является файлом cookie «запомнить меня», вам необходимо вручную прочитать файл cookie и использовать его данные для аутентификации пользователя в новом сеансе. - person Artefacto; 27.07.2010
comment
О, хорошо, вот и вся история, это круто, я думаю, теперь я могу решить эту проблему, спасибо за вашу помощь @Charles, я проверил ссылку, я нашел ее весьма полезной. - person Abdullah Khan; 27.07.2010