Вопрос между session.gc_maxlifetime и session.cookie_lifetime

Мой первый вопрос в stackoverflow. Заранее спасибо!

Я так запутался в механизме сеанса PHP. Я понял session.gc_maxlifetime по PHP - ini_set ('session.gc_maxlifetime', 5) - Почему он не завершает сеанс?. Но я до сих пор не знаю разницы между session.gc_maxlifetime и session.cookie_lifetime.

Вопрос: Что произойдет, если время session.cookie_lifetime истечет? Будет ли файл cookie сеанса удаляться напрямую с клиентского компьютера?

Мне нужно разобраться в этом вопросе, а затем продолжать задавать что-то еще.


person Ruiwant    schedule 01.04.2011    source источник


Ответы (2)


Срок действия cookie передается клиенту. Если срок службы cookie истек, клиент обычно удаляет его. Так что это на стороне клиента. Кроме того, сеанс может быть активным даже после того, как файл cookie исчез, поскольку вы можете снова создать тот же файл cookie, увеличить его время жизни или передать идентификатор сеанса через uri.

Надеюсь, это поможет!

person Legy    schedule 01.04.2011
comment
Спасибо! Вы имеете в виду, что если session.gc_maxlifetime не является тайм-аутом, даже файл cookie сеанса на стороне клиента удален, этот сеанс будет автоматически работать, отправив новый файл cookie сеанса на сторону клиента? - person Ruiwant; 01.04.2011
comment
нет. если идентификатор сеанса больше не хранится на стороне клиента, сервер не сможет идентифицировать клиента, поэтому вы не сможете работать в одном сеансе. Будет создан новый сеанс. - person Legy; 01.04.2011
comment
ВАУ! Я понял! Спасибо, дружище! - person Ruiwant; 01.04.2011
comment
Спасибо за объяснение session_timeout, но вы не объяснили gc_maxlifetime. - person jor; 05.05.2021

session.gc_maxlifetime - время в секундах, по истечении которого данные вашего сеанса могут считаться данными мусора. Другими словами, вы можете сказать, что настало время поддерживать неиспользуемый сеанс PHP.

session.cookie_lifetime - время жизни файлов cookie сеанса в секундах независимо от того, активен сеанс или нет. Таким образом, куки будут оставаться в живых, пока не истечет заданное время.

См.
http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime https://blogs.oracle.com/oswald/entry/php_session_gc_maxlifetime_vs

person ahPo    schedule 06.06.2013
comment
Статья, на которую вы ссылаетесь, действительно помогла, особенно эти утверждения: 1. session.gc_maxlifetime - ... Пока время между его щелчками никогда не превышает 1440 секунд. Это значение тайм-аута. 2. session.cookie_lifetime - это значение косвенно определяет абсолютное максимальное время жизни сеанса, независимо от того, активен пользователь или нет. Если это значение установлено на 60, каждый сеанс заканчивается через час. - person amurrell; 21.05.2014