Мониторинг закрытия сессии

Ashotovich

Новичок
Мониторинг закрытия сессии

Всем привет.
Подскажите, пожалуйста, как можно отследить окончание сессии пользователем и записать время оного в базу? Тот случай, когда пользователь дисциплинированно нажимает специальную кнопочку "выйти из БД" прошу не рассматривать - здесь все тривиально. А вот если пользователь просто закрыл окно браузера - можно что-то сделать? Ведь сессия рвется, PHP-сервер это понимает, можно ли это как-то зафиксировать?

Заранее спасибо.
 

Фанат

oncle terrible
Команда форума
с какой стати "PHP-сервер это понимает"?
Ты [f]na_tanke[/f] читал?
и где там написано, что веб сервер хоть что-то знает о том, что там юзер у ебя на компе делает - окно закрыл, комп выключил, или вообще молотком разбил?
 

Фанат

oncle terrible
Команда форума
Ув. тов. Крейзи имел в виду завершение сессии по таймауту, а не "завершение сессии пользователем", конечно.
 

Фанат

oncle terrible
Команда форума
Впрочем, я же совсем забыл.
ув.тов. Крейзи выступает за то, чтобы у сессий таймауты растягивать, как резинку от трусов, так что, если следовать его мудрым поучениям, то и этот способ не сгодится.
я думаю, ув.тов. Крейзи вызовется, если ему выдадут инвентарь в виде палки, стоять за спиной каждого юзера и побуждать их нажимать кнопочку "выйти из БД"
 

antonio

Moderator
Команда форума
Понимание в корне не верно. Сесия и соединение суть разные вещи. Соединение может ьыть прервано, а сессия на серваке останется. Самый простой метод при логине пользователя вычищать старые сессии, ну или че-то с ними делать. Я ипрользую такой подход. При каждом клике я обновляю expired time сесии, Т.о. я знаю когда она должна завершиться, если юзер перестанет ходить по сайту. Если это время меньше текущего, то сессия считается мертвой, т.е. юзер не кликался на ссылки в течение определенного времени. Какой это будет отрезок - решать тебе. Я использую lifetime 30 минут, можно больше или меньше. Выбирай как хошь.
 

Crazy

Developer
Автор оригинала: Фанат
ув.тов. Крейзи выступает за то, чтобы у сессий таймауты растягивать, как резинку от трусов
Прости -- Первый Закон Спора. Ничего не могу поделать.
 

Фанат

oncle terrible
Команда форума
Крейзи, ты так до сих пор и не понял, что с тобой никто не спорил.
Тем более - ради самого спора, как это упорно делаешь ты. Воюй дальше.
 

Ashotovich

Новичок
Хехе. Действительно, имелся в виду таймаут. Хотя от меня, ламера эдакого, можно было ожидать и чаяния от сервера всевидящести и всемогущести. ;)

Мысль о продлении таймаута по клику (или по переходу на другую страницу) - хороша. Буду думать, однако. :)
 

Crazy

Developer
Сугубо для Фаната (личные сообщения у него, вероятно, не работают):

[offtopic on]

Брат, ты что-то путаешь. Не я маникально вытаскиваю обрывки старого спора, да еще приписывая оппоненту чушь, которую он никогда не говорил (есть возражения -- дай точную цитату со ссылкой).

Я вполне понимаю, что тот тяжкий облом до сих пор давит тебе на мозги и мешает спокойно спать. Но я, прости, не психотерапевт и помогать тебе не буду. Обратись к специалистам.

[offtopic off]
 

Crazy

Developer
Автор оригинала: Ashotovich
Мысль о продлении таймаута по клику (или по переходу на другую страницу) - хороша. Буду думать, однако. :)
Не очень понятна фраза о "продлении таймаута". По обращению к очередному скрипту, использующему сессии, таймаут и так будет "возобновляться" (отсчитываться заново).
 

Ashotovich

Новичок
А где этот таймаут указывается? В php.ini стоит следующее:

session.cache_expire = 180 - оно?
 

Фанат

oncle terrible
Команда форума
Крейзи, ты зря так нервничаешь.
Личные действительно, как-то странно работают - никакой нотификации.
обязательно почитаю.
Ты себе очень льстишь, считая, что тот разговор тяжким камнем лежит у меня на душе. Видимо, ты очень большое значение придаешь той игре, в которую играл. А тебе уже сегодня говорил, и могу повторить. мне было интересно от тебя выслушать некую мысль.
Ты, как девочка, засмущался. Если ты думаешь, что твое смущение меня очень парит - то ты ошибаешься.

ушь, которую он никогда не говорил
В общем, я так и думал, что ты эту глупость не утверждал, а всего лишь хотел поиграть словами :)
 

Фанат

oncle terrible
Команда форума
ашотович, внимательнее читай то, что тебе написали.
Я хоть и спорю с Крейзи, но это не избавляет тебя от обязанности внимательно читать то, что он пишет, ибо он умнее меня.
 

Фанат

oncle terrible
Команда форума
Все, что тебя должно волновать, крейзи написал еще в самом первом ответе.
Хочешь - пиши свой обработчик.
тогда ты будешь знать, когда убилась сессия.

Еще вариант - завести небольшую табличку/файлик, в которой вести учет сессиям.

А вообще, мое мнение такое - не трогайте сессии руками.
Это механизм общения юзера с сервером. одного юзера. его интимное дело.
Если хотите сделать для юзеров что-то общее, то делайте без сессий, другими способами.
У сессий и своих геморроев хватает.
 

Ashotovich

Новичок
;) Ок. Буду думать, (читать пейджер). В общем-то, по хорошему, хрен с ним, с окончанием сессии. Но если времени хватит, все же займусь проблемой поглубже.

Спасибо, уважаемые. ;)
 

antonio

Moderator
Команда форума
Автор оригинала: Фанат

Если хотите сделать для юзеров что-то общее, то делайте без сессий, другими способами.
У сессий и своих геморроев хватает.
Не согласен, можно сделать свою поддержку сессий (что у меня и реализовано) и трекить их как хошь.
 

Фанат

oncle terrible
Команда форума
антонио, я не о хэндлере, а о классическом косяке.
Если не работают куки, то что?
вешать в урл? Поисковые роботы будут счастливы - контент не меняется, а адрес все время новый.
несекурность урловая, в пхп.ини описанная.

Ну, а если делать толкьо на куках - то вполне.
Там вообще особо делать нечего - табличка да кука :)
 
Сверху