Как работает сессия?Где сохранить значение сеанса?Как увеличить время жизни сессии? - PullRequest
0 голосов
/ 01 сентября 2010

Как работает сессия? Где сохранить значение сеанса? Как увеличить время жизни сессии?

Ответы [ 2 ]

3 голосов
/ 01 сентября 2010

Сеансы делают HTTP практически протоколом с состоянием, который фактически не имеет состояния.Данные сеанса зависят от клиента, но хранятся на стороне сервера, обычно это сериализованный массив в текстовом файле.(Поведение может быть переопределено в PHP с использованием обработчиков сеансов, см. session_set_save_handler () .)

Сервер предоставляет клиенту файл cookie, содержащий идентификатор ( идентификатор сеанса ) который однозначно идентифицирует этого клиента.Когда выполняется HTTP-запрос, вместе с ним отправляется файл cookie, содержащий идентификатор сеанса, и сервер находит данные сеанса клиента и загружает их, восстанавливая виртуальное состояние клиента .(Иногда идентификатор отправляется не через cookie, а как параметр GET, но это не имеет значения.)

В PHP вы можете получить доступ к состоянию сеанса, используя суперглобальный $ _ SESSION , после использования session_start () для создания или возобновления сеанса.

Поскольку HTTP не имеет состояния, сервер не может узнать, когда клиент уходит (закрывает окно браузера, выходит, чтобы купить какой-либонапитки ...) Поэтому единственное разумное, что нужно сделать, - это измерить время, прошедшее с момента их последнего запроса, и предположить, что оно прошло, если оно превышает пороговое значение.Это количество времени называется «тайм-аут сеанса» или «время жизни сеанса».Вы можете установить значение по умолчанию в файле php.ini или с помощью функции ini_set () .См. раздел о директивах сессии в php.ini для получения более подробной информации.

1 голос
/ 01 сентября 2010

Как работает сессия: http://www.tizag.com/phpT/phpsessions.php

Чтобы увеличить время жизни сессии, используйте функцию ini_set со свойством session.gc_maxlifetime:

 ini_set('session.gc_maxlifetime', '28800'); // Set maxlifetime to 4 hours

Примечание: Если у вас есть несколько страниц на одном сервере, каждая из которых использует сеанс (с одинаковыми или разными именованными сеансами, это не имеет значения), минимум gc_maxlifetime любой из этих сценариев оказывается эффективным временем жизни файлов сеанса.

...