How long will my session last?

Asked
Viewd107010

47

Can someone please tell me how long my session will last from the data below? - I'm not sure which one tells me

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 ответов

87

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

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

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

20

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

 session.gc_maxlifetime  1440    1440
 
8

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

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

8

Если 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 до значения, большего или равного времени жизни cookie, чтобы гарантировать, что ваши сеансы не истекут.

  • Верно (я кое-что забыл упомянуть). Я отредактировал свой ответ, добавив объяснение этих настроек.

    Øystein Riiser Gundersen04 октября 2009, 12:45
  • Если ваш браузер все еще был запущен, то да. Срок действия файла cookie сеанса истекает только после выхода из приложения браузера.

    Øystein Riiser Gundersen04 октября 2009, 12:28
  • Спасибо, когда я закрываю браузер и снова открываю страницу, я все еще вижу тот же идентификатор сеанса?

    Keith Donegan04 октября 2009, 12:24
  • Это не время доступа, а время изменения настроения.

    Gumbo04 октября 2009, 12:51
  • The cookie yes, but the session itself will expire after 24 minutes without any activity even if you keep the browser open.

    Lukáš Lalinský04 октября 2009, 12:35