Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Igor Mikhailov                       2:5005/42.21   13 Jun 2001  21:35:40
 To : Pavel Ammosov
 Subject : как удалять старые сессии в Apache::Session?
 -------------------------------------------------------------------------------- 
 
 password: :-P
 
  IM>> Использую для сессий Apache::Session, в частности
  IM>> Apache::Session::MySQL и Apache::Session::File. mod_perl'ом
  IM>> не пользуюсь, пишу только под CGI. Вопрос: как удалять
  IM>> старые сессии? Timestamp то я в них кладу, но как получить
  IM>> итератор по идентификаторам сессий, чтоб по всем пройтись
  IM>> и удалить дохлые? Hе напрямую же в БД или файлы ломиться.
  PA> Хехе.  Это самая большая фигня в Apache::Session.  "Официальный" метод
  PA>  -- субклассировать A:S и вставлять информацию об последнем обновлении
  PA> самому.
  PA> Hеофициальный -- завести в таблице с сессиями поле timestamp:
  PA> и удалять базируясь на нем.
 
 А если происходит только чтение? Или каждый раз при чтении update'ить строку? :(
 
  PA> Старые данные Apache::Session::File у меня удаляет tmpreaper(8).
 
 По времени доступа к файлу?
 
 Тут сразу есть проблема - возникает зависимость кода от способа хранения сессий.
 :(
 Вообще говоря хочется что то такое:
 1) у меня уже есть возможность удалять сессию, id которой я знаю
 tied(%s)->delete;
 2) я в каждую сессию при доступе кладу $s{time}=time;
 3) для того, чтоб удалить старые сессии мне нужно только их _перебрать все_.
 но заниматься угадыванием идентификаторов - жизни не хватит.
 4) следовательно нужен интерфейс дающий возможность пройтись по всем сессиям -
 итераторы. Типа:
 $session=tied(%s)->first_id;
 do {
     my %s;
     tie %s, 'Apache::Session::MySQL', $session, $params;
     tied(%s)->delete if $s{time}+60*20<time;
 } while($session=tied(%s)->next_id);
 
 Получаем универсальность интерфейса. В принципе можно дописать самому. Может кто
 подскажет идею интерфейса получше?
 
 With best wishes Igor.
 
     Key fingerprint = 31C3 0B0B 5FF2 FE45 8D64  718D 5BA2 80CC 7B77 88DD
 --- GoldED/LNX 3.0.1
  * Origin: Every channel is empty first :) (C) TTY #tomsk (2:5005/42.21)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 как удалять старые сессии в Apache::Session?   Igor Mikhailov   10 Jun 2001 08:11:28 
 Re: как удалять старые сессии в Apache::Session?   Pavel Ammosov   13 Jun 2001 02:08:08 
 как удалять старые сессии в Apache::Session?   Igor Mikhailov   13 Jun 2001 21:35:40 
 Re: как удалять старые сессии в Apache::Session?   Pavel Ammosov   15 Jun 2001 15:35:20 
 как удалять старые сессии в Apache::Session?   Igor Mikhailov   16 Jun 2001 07:54:58 
 Re: как удалять старые сессии в Apache::Session?   Pavel Ammosov   17 Jun 2001 22:46:28 
 как удалять старые сессии в Apache::Session?   Igor Mikhailov   18 Jun 2001 07:12:16 
 Re: как удалять старые сессии в Apache::Session?   Pavel Ammosov   18 Jun 2001 23:33:10 
Архивное /ru.cgi.perl/32643b27df4b.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional