Закрытие сессий

rotoZOOM

ACM maniac
Закрытие сессий

Хотелось бы организовать сборку мусора после закрытия сессии. В ASP есть удобный событийный механизм, а вот есть ли такое в PHP ? Например, чтобы по закрытию сессий вызывался какой-нибудь callback.
Или придется все равно crontab пользоваться ?
 

Фанат

oncle terrible
Команда форума
а зачем?

-~{}~ 09.12.04 11:58:

кстати, кронтаб будет, мне кажется, предпочтитетельнее
 

rotoZOOM

ACM maniac
Пользователь редактирует много информации.
Все его редактириование я храню во временной директории/хранилище.
После окончания редактирования все это должно перенестись на постоянное место обитание.
Вот.
Например во время редактирования произошло закрытие сессии (ну по разным причинам: связь оборвалась, браузер повис и т.д.) И надо просто все почистить.
 

rotoZOOM

ACM maniac
Ну мне так и предлагали умельцы ... наши.
А чем session_set_save_handler хуже ?
 

Фанат

oncle terrible
Команда форума
дык, очевидно же - оно ж будет жрать время юзера.
один на сотню хитов будет будет тормозить.
мелочь - а неприятно.
 

rotoZOOM

ACM maniac
Логично ...
Тогда можно запускать мусорщика раз в сутки, он проверит количество открытых сессий (если это можно). Если их количество не превышает заданного минимума, то он работает, если нет, то он заряжает себя на +10 минут например и все повторяет.
Если же он не сможет повторить это несколько раз подряд, то работает не смотря на количество открытых сессий.
 

Фанат

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

Ну, или переопределять обработччик.

-~{}~ 09.12.04 13:03:

SiMM
там не только файлы
хотя нет - может быть ты и прав.
наг кроновский скрипт сессии не трогает, а вот каталоги удаляет старые, да.
 

rotoZOOM

ACM maniac
SiMM скорее всего не получится, так как не все действия пользователя обязательно будут влиять на сессионные файлы.
Если я правильно понял сессионные файлы - это те, временные которые я создаю.
 

SiMM

Новичок
Автор оригинала: rotoZOOM
SiMM скорее всего не получится, так как не все действия пользователя обязательно будут влиять на сессионные файлы.
Ну и что? Если сессия стартуется - этого достаточно.
Если я правильно понял сессионные файлы - это те, временные которые я создаю.
Они сами создаются. По session_start
 

rotoZOOM

ACM maniac
SiMM ну я понял, тогда это не те файлы. То есть ты предлагаешь удалять сессионные файлы, которые и так сами удаляются системой ? Ведь при закрытии сессии происходит удаление этих файлов ? Или я не правильно понял ?
 

SiMM

Новичок
Или я тебя неправильно понял. Почему бы не хранить всё в сессии, а не во временных файлах?
 

rotoZOOM

ACM maniac
Вот что я буду хранить: картинки, текст (возможно большой). Вообщем всю необходимую информацию для сайта, кроме самого HTML'ника.
 

SiMM

Новичок
Автор оригинала: rotoZOOM
То есть ты предлагаешь удалять сессионные файлы, которые и так сами удаляются системой ?
Я предлагаю удалять файлы, связанные с сессией, как и саму сессию, при помощи крона. Остальное сказал Фанат (запретить встроенное удаление сессий)
PS: т.е. даже Фанат уже давно всё разжевал ;)
 

Фанат

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

Другое дело, что сессия, я тут подумал, не очень подходит для таких вещей.
Встал человек покурить, к примеру, вернулся - а файлов нетути!

имхо, тут сессии не при делах
я бы сделал просто каталог по имени юзера - нехай в нем резвится
 

rotoZOOM

ACM maniac
Ага, понял. Спасибо. Вариант замечательный.
Торможу.

-~{}~ 09.12.04 15:39:

Фанат Можно придумать промежуточное сохранение (кнопульку), типа нажал и пошел курить.
А каталоги юзера все равно придется прибивать по таймеру.
 
Сверху