вечные сессии в PHP - PullRequest
       14

вечные сессии в PHP

0 голосов
/ 27 октября 2009

Можно ли настроить сессии PHP, чтобы никогда не истек? В настоящее время у меня установлены 24 минуты по умолчанию в php.ini - я могу сделать это за пару недель или что-то в этом роде, но мне было интересно, смогу ли я установить их на бесконечное время жизни?

Я хочу добиться эффекта, аналогичного Stackoverflow: мне никогда не нужно входить здесь. Достигается ли это в SO с помощью бесконечного сеанса или каким-либо другим способом?

Кроме того, в качестве дополнительного вопроса: Как очистить файлы сеанса с истекшим сроком? Если кто-то создает сеанс и никогда не возвращается, какой процесс очищает его просроченный файл?

Ответы [ 3 ]

8 голосов
/ 27 октября 2009

Обычно то, что кажется вечным сеансом, это две вещи: сеанс, срок которого истекает довольно скоро, и очень длительный файл cookie, содержащий маркер автоматического входа.

В этом вопросе StackOverflow содержится большая серия ответов о сеансах и входе в систему: Полное руководство по аутентификации веб-сайта

Относительно вашего вопроса о том, когда сеансы очищаются, есть несколько настроек php.ini для контроля, когда запускается сборка мусора для сеансов.

1 голос
/ 27 октября 2009

Ответ на дополнительный вопрос

Очистка файла сеанса контролируется следующими 3 настройками php.ini:

  • session.gc_probability (значение по умолчанию 1)
  • session.gc_divisor (значение по умолчанию 100)
  • session.gc_maxlifetime (указывается возраст, после которого сеанс считается мусором)

Первые 2 параметра определяют вероятность запуска процесса сбора мусора при начале сеанса (до или в самом начале выполнения вашего скрипта, в зависимости от того, как вы его настроили)

В конфигурации по умолчанию вероятность того, что это произойдет, составляет 1%. Если это так, то файлы, которые старше maxlifetime, очищаются.

Что касается вашего первого вопроса - почему бы не написать собственный обработчик сеансов, который будет хранить сеансы в базе данных (если она у вас есть). Таким образом, вы можете видеть и контролировать сеансы прямо из базы данных. Удобно:)

1 голос
/ 27 октября 2009

Поскольку PHP разрешает и поощряет создание собственных обработчиков хранения данных сеанса, единого правильного ответа на этот вопрос нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...