Подскажите пожалуйста, когда начинает работать сборщик мусора, удаляющий устаревшие сессии

BANEN

Новичок
Проблема такая - делаю счетчик посещений с помощью сессий, все вроде сделал, понажимал раз 60 - вроде работает, но через указанный период моего бездействия файл сессий почему-то не удалялся, и при обновлении этой страницы снова учет продолжался. Я порылся в php.ini - поставил session.gc_divisor = 1, session.gc_probability = 1 - вроде как для того, чтоб сборщик мусора запускался каждый раз при запросе к серверу, ну и изменил session.gc_maxlifetime = 120 - чтоб ждать поменьше было. Я так понимаю сборщик мусора - в моем случае - запускается каждый раз, когда происходит какой либо запрос к серверу, и проверяет все файлы сессий на просроченность. Дак вот (спасибо Redjik), открыл я этот файл в двух браузерах - пообновлял в одном (чтоб изменения увидеть) и в другом, подождал 2 минуты, обновил в одном - учет продолжается, обновил в другом - счетчик начинает работать заново. В чем вопрос - как произошло, что после перерыва в 2 минуты и обновления в одном браузере в этой странице учет продолжется, а после обновления в другом браузере счетчик начинает работать заново; может какое действие происходит перед запуском сборщика мусора, что он не удаляет тот файл сессии, который соответствует браузеру, в котором я обновил страницу первой? Заранее извиняюсь, если мои предположения окажутся очень глупыми, но, пожалуйста, объясняйте спокойно :)
 

Redjik

Джедай-мастер
Код покажи

ЗЫ. ну все верно, как надо же отработало... сборщик мусора отрабатывает после работы скрипта
 

BANEN

Новичок
Redjik, т.е. когда скрипт работает, происходит доступ к файлу сессии, и от момента доступа начинает отсчитываться время жизни сессии, а потом уже начинает работать сборщик мусора, и он проверяет время последнего доступа к каждому файлу сессии на сервере, и поэтому файл, который я обновил первым, даже после 10 минут простоя до обновления не удалился?
 

BANEN

Новичок
PHP:
if (!isset($_SESSION['schetchik'])) {$_SESSION['schetchik']=1;}
else {$_SESSION['schetchik']++;}
echo "Вы скачали эту страницу с сервера <span style='font-family: Verdana; color: red; size: 25;'>".$_SESSION['schetchik']."</span>";
 

Redjik

Джедай-мастер
Скорее всего, что так, но за это не парся, в принципе в доке не указано когда он отрабатывает, но судя по твоим тестам - после.
 

BANEN

Новичок
А можно поподробнее - что и где конкретнее посмотреть?
 

Redjik

Джедай-мастер
Они на C, все еще желание смотреть?
Сам для себя ответь на вопрос, зачем тебе это?

Ты уже 3 темы создал одинаковые по сути.
Придумай реальную ситуацию, где тебе не пофиг, когда отработает сборщик (во время инициализации сессии или после отработки скрипта)

Тем более ты экспериментально установил, что после.
 

BANEN

Новичок
Проблема в том, что хочется уяснить моменты - чтоб если что - знать, где рыть, а не тыкаться, и терять время. Вот так вот)
 

Redjik

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

BANEN

Новичок
XD)) Сарказм, сарказм, улыбнуло)) Я понял тебя) Конечно, не всегда надо делать так, но не думаю, что в этом случае
 

Фанат

oncle terrible
Команда форума
BANEN
На самом деле никто точно здесь этого не знает.
Поэтому единственный ответ, который ты получишь - это пальцы веером.
И самым лучшим вариантом разобраться будет продолжить эксперименты.

Для начала проверь, точно ли те изменения, которые ты вносишь в php.ini, применяются к запускаемому коду.

если ты под юниксом, может теоретически помочь strace
 

BANEN

Новичок
Фанат, если ты еще тут - да, изменения, которые я вношу в php.ini, применяются к запускаемому коду. Может, что ещё присоветуешь? :)
 

Gas

может по одной?
BANEN
я тоже не знаю точно как работает сборщик мусора, но если тебе нужно отслеживать время, пиши его в сессию и проверяй при каждом посещении, а не надейся на session.gc_* настройки.
 

Фанат

oncle terrible
Команда форума
Я всегда тут.
Но исследованием работы сборщика мусора в сессиях не занимался - нужды в этом никогда не было.

Честно говоря, я не очень люблю счётчики посещений ( ни один счётчик никогда не покажет точной цифры, и никакие уточнения не стоят потраченных на них усилий), а использовать для этого сессии считаю и вовсе напрасной тратой ресурсов.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А если еще учесть, что под разными ОСями (привет, убунта!) сборщик мусора может работать по другому, то вопрос превращается в риторический.
 
Сверху