Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: сесии долго не удаляется после закритии браузера
Форумы портала PHP.SU » » Вопросы новичков » сесии долго не удаляется после закритии браузера

Страниц (1): [1]
 

1. dadli - 12 Октября, 2011 - 12:59:41 - перейти к сообщению
привет всем.
после того когда ползовател авторизуется на саите, в папке tmp создается ид сесии да, тоест фаил такого вида:
sess_f11bc54b134a98020eefab7ee233576e478c69d7
а когда ползовател закроит браузер, сесия остается в папке, я читал что сборшик мусора удалит неактивних сессии из папки tmp через 20-30 минут, ето время зависимо от настроики сервера да? а я сматрию и сессии остается в папке через 3 часа и болше, после закритии браузера, почему так долга ани живут? тестирую на локалном - денвере, я настроики не изменил. скажите пожалуиста как нужно изменит настроики так, что после закрития браузера сесия уничтожилос например после 10 минут,
и где мне смотрет, сеичас сколко время устоановлена? тоест сборшики мусора через сколко времии удаляет сесии из папки tmp ?
2. illy - 12 Октября, 2011 - 13:11:55 - перейти к сообщению
в скрипте создания сессии указываешь время её жизни
прочти мануал
3. Stierus - 12 Октября, 2011 - 14:02:51 - перейти к сообщению
сборщик мусора не запускается по расписанию, думаю, это то, на что вам нужно обратить внимание.
4. dadli - 12 Октября, 2011 - 14:56:15 - перейти к сообщению
illy
об етом ви говорите? например:
ini_set("session.gc_maxlifetime",600);
если да то, ето не помагает.


Stierus
да кожется ви прав, смотрел я phpinfo(); и там написано (в разделе session)

Directive | Local Value | Master Value
-------------------------------- -------------------------
..............
session.gc_maxlifetime | 1440 | 1440
..................


ето значит что после закритии браузера, сесия должен уничтожен в течении 24 минут, а он жив - болше три часа.
Цитата:
сборщик мусора не запускается по расписанию,

скажите пожалуиста что может причина етого ?
5. Stierus - 12 Октября, 2011 - 15:25:38 - перейти к сообщению
это не по какой-то причине, это его нормальное поведение. Как работает сборщик мусора? Когда вызывается скрипт, с какой-то вероятностью, пых запустит и сборщика мусора (не помню вероятность запуска, вроде, настраиваемо). Так вот если не запускать пых - то и сборщик мусора запускаться не будет. Иными словами : если вы 1 раз запустили скрипт, который создал сессию, а после этого не запуская скрипты ждете, когда удалится файл - вы этого не дождетесь, что бы что-то удалилось - нужно запускать скрипты (пхп процесс), который с определенной вероятностью запустит механизм сборки мусора. А время жизни сессий, которые вы выставляете - этот порог, который необходим для удаления файла. Тоесть сборщик мусора будет проходить по всем файлам сессий и удалять только те, которые созданы ранее указанного времени.
Из всего этого вытекает еще 1 интересный нюанс: Вы запускаете скрипты редко, у вас время жизни сессии стоит 10 секунд, но вероятность запуска сборщика мусора стоит 0.0001% ... как вы поняли, через 10 секунд сессионный файл не исчезнет.
6. EuGen - 12 Октября, 2011 - 15:28:34 - перейти к сообщению
Stierus пишет:
как вы поняли, через 20 секунд сессионный файл не исчезне

Однако же можно не ждать когда там придет время и сделать это специально
http://ru.php.net/manual/en/func...llect-cycles.php
7. Stierus - 12 Октября, 2011 - 16:17:13 - перейти к сообщению
EuGen, вы действительно советуете это использовать на раюбочих сайтах, в продакшн системах?
8. dadli - 12 Октября, 2011 - 16:56:26 - перейти к сообщению
ок Stierus спасибо балшое
спасибо всем
9. dadli - 13 Октября, 2011 - 11:33:24 - перейти к сообщению
я продолжал поиск на етой теме, потому что я заинтересовался, как вычисляется вероятност запуска сборшика мусора и нашёл его. в разделе session (из phpinfo();) есть такие веши:

Directive | Local Value | Master Value
-------------------------------- ------
session.gc_divisor | 100 | 100
session.gc_probability | 1 | 1



вероятност вычисляется так: session.gc_probability / session.gc_divisor получается 1 к 100
тоест если ми хотим при любом запуске "включит" сборшик мусора надо у session.gc_probability установить значение 100
получим 100 k 100

вот здес статя об етом http://habrahabr[dot]ru/blogs/personal/13248/



и кстати, там (на хабре) автор говорит что он изменяеть значение через функцию: ini_set("session.gc_probability",число)
а ini_set() нужен во всех пхп фаилах да? как думаете не удобно настроить через .htaccess? тоесть написать в фаиле .htaccess
php_value session.gc_probability число
10. LIME - 13 Октября, 2011 - 11:38:36 - перейти к сообщению
dadli а нафига?
сервер скучает? просит занять чем-нибудь? ))
11. dadli - 13 Октября, 2011 - 12:36:27 - перейти к сообщению
LIME
Цитата:
сервер скучает?

ну ето зависимо на класс-e (кочество) саитов, которие лежит на етом сервере Улыбка

что касается "нафига", конечно если всо останется по умалчаню, все ровно будет работать, сборшик мусора очистит старие сесси как нибуд, просто я заинтересовался именно по какои причини: иногда работает сборшик, иногда нет и написал ето (тоест предыдущи) сообшение: может бить комуто ето интересует. Улыбка

а я не знаю, как лучше настроит php.ini: через ini_set() или через .htaccess? кажется через .htaccess удобнее, но не знаю, может каким то причином ini_set() лучшее?
12. Stierus - 13 Октября, 2011 - 13:52:44 - перейти к сообщению
не рекомендуется выставлять в 100, слишком большая нагрузка на сервер.

 

Powered by ExBB FM 1.0 RC1