Получается, что есть еще т. н. как "вероятность смерти" сессии, т.е. вероятность того, что при следующем запросе на сервере запустится сборщик мусора gc и убьет устаревшую сессию.. По дефолту эта вероятность равна 1%. Действительно, поставив session.gc_probability равным 100%, сессия стала убиваться каждый раз после простоя (но это ведь плохой выход!). Значит получается, что:
1) если на сайте будет всего один пользователь, то его сессия будет жить вечно что ли (вероятность 1% от каждого его запроса, что сессия будет уничтожена после простоя, и ему не поможет больше никто другой своими переходами - очень мала!) ?
2) другой вопрос - я замечал, что на некоторых сайтах (на которых тоже только я один запускал сессию) сессия 100% удалялась после простоя.. Почему так могло получиться? Если ли все-таки другие настройки на php-сервере кроме session.gc_probability 100, которые позволяют всегда 100% по истечении времени жизни сессии, убивать ее?
p.s. никакие стандартные настройки, связанные с сессией, не были изменены.
p.p.s. Интересует именно стандартная session, а не то, как можно заменить ее при помощи БД или куков
Очень хочется разобраться в этом, заранее большое спасибо!
Спустя 17 минут, 53 секунды (9.04.2009 - 20:15) kirik написал(а):
Цитата (fever @ 9.04.2009 - 11:57) |
Очень хочется разобраться в этом, заранее большое спасибо! |
Ну ты все верно описал, и так оно и есть. Вероятность убития сессии была добавлена для того, чтобы при каждом запросе юзера не перерывать всю папку на наличие мертвых сессий. Если у тебя на сайт заходят 2-3 человека, тогда имеет смысл поставить gc_probability побольше, а если же у тебя хотя бы сотня есть, то ты можешь быть уверен что сессии будут всегда очищаться вовремя.
Да и в том, что несколько файликов сессии у тебя будет лежать в папке. Есть они не просят, пусть лежат А юзер как только закрывает браузер - его сессионная кука убивается.
Цитата (fever @ 9.04.2009 - 11:57) |
другой вопрос - я замечал, что на некоторых сайтах (на которых тоже только я один запускал сессию) сессия 100% удалялась после простоя.. |
сравни настройки session.gc_divisor и session.gc_probability. Потому что вероятность убития сессии зависит от отношения этих параметров. Тоесть если gc_divisor = 1000, а gc_probability = 1, то сессии будут чиститься каждые 1000 раз (примерно). А по дефолту gc_divisor = 100, тоесть 1% вероятности, как ты и написал.
Спустя 15 часов, 15 минут, 35 секунд (10.04.2009 - 11:30) fever написал(а):
Спасибо большое, kirik. В принципе по поводу удаленной 100% сессии на другом сайте - может быть, что я ковырял другие сайты с того же хоста параллельно - они и убивали сессию и того другого, просто мог этого не заметить
Спустя 10 часов, 22 минуты, 4 секунды (10.04.2009 - 21:52) kirik написал(а):
Цитата (fever @ 10.04.2009 - 03:30) |
по поводу удаленной 100% сессии на другом сайте - может быть, что я ковырял другие сайты с того же хоста параллельно |
Скорее всего так и было. Папка-то одна