Как долго продлится мой сеанс? - PullRequest
43 голосов
/ 04 октября 2009

Может кто-нибудь сказать мне, как долго будет длиться мой сеанс из данных ниже? - Я не уверен, кто мне скажет

session.auto_start  Off Off
session.bug_compat_42   Off Off
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   /var/lib/php/session    /var/lib/php/session
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    Off Off
session.use_trans_sid   0   0

Ответы [ 4 ]

82 голосов
/ 04 октября 2009

Как правило, вы можете сказать, session.gc_maxlifetime указывает максимальное время жизни с момента последнего изменения данных сеанса ( не в последний раз session_start было называется!). Но обработка сессий в PHP немного сложнее.

Поскольку данные сеанса удаляются сборщиком мусора, который вызывается только session_start с вероятностью session.gc_probability , деленной на session.gc_divisor . Значения по умолчанию - 1 и 100, поэтому сборщик мусора запускается только в 1% всех вызовов session_start. Это означает, что даже если теоретически для сеанса уже истекло время ожидания (данные сеанса были изменены более чем session.gc_maxlifetime секунд назад), данные сеанса могут использоваться дольше, чем это.

В связи с этим я рекомендую вам реализовать собственный механизм тайм-аута сеанса. См. мой ответ на Как закончить сеанс PHP через 30 минут? для получения более подробной информации.

19 голосов
/ 04 октября 2009

Это тот самый. Сессия продлится 1440 секунд (24 минуты).

session.gc_maxlifetime  1440    1440
8 голосов
/ 04 октября 2009

Вы ищете gc_maxlifetime, см. Описание http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime.

Ваш сеанс будет длиться 1440 секунд, что составляет 24 минуты (по умолчанию).

7 голосов
/ 04 октября 2009

Если session.cookie_lifetime равно 0, cookie-файл сеанса будет действовать до тех пор, пока браузер не закроется.

РЕДАКТИРОВАТЬ : Другие упоминали настройку session.gc_maxlifetime. Когда происходит сборка мусора в сеансе, сборщик мусора удалит все данные сеанса, к которым не был получен доступ в течение более чем session.gc_maxlifetime секунд. Чтобы установить время жизни для файла cookie сеанса, позвоните session_set_cookie_params() или определите параметр PHP session.cookie_lifetime. Если этот параметр больше session.gc_maxlifetime, вы должны увеличить session.gc_maxlifetime до значения, большего или равного времени жизни куки, чтобы гарантировать, что ваши сеансы не истекут.

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