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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Pavel Ammosov                        2:5020/52      15 Jun 2001  15:35:20
 To : Igor Mikhailov
 Subject : Re: как удалять старые сессии в Apache::Session?
 -------------------------------------------------------------------------------- 
 
 
 IM>Linux login: Pavel
 IM>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>> и удалять базируясь на нем.
 IM>А если происходит только чтение? 
 
 Я не пробовал и доки от mysql у меня нет под
 рукой, может он и при чтении timestamp обновляет?
 
 IM> Или каждый раз при чтении update'ить строку? :(
 
 Hу, если ты используешь CGI, время на UPDATE одной строки врят ли будет
 самым большим тормозом в твоей системе :-)
 PA>> Старые данные Apache::Session::File у меня удаляет tmpreaper(8).
 IM>По времени доступа к файлу?
 
 Ага.
 
 IM>Тут сразу есть проблема - возникает
 IM>зависимость кода от способа хранения сессий. :(
 IM>Вообще говоря хочется что то такое:
 IM>1) у меня уже есть возможность удалять сессию, id которой я знаю
 IM>   tied(%s)->delete;
 IM>2) я в каждую сессию при доступе кладу $s{time}=time;
 IM>3) для того, чтоб удалить старые сессии мне нужно только их _перебрать 
 IM>   все_. но заниматься угадыванием идентификаторов - жизни не хватит.
 IM>4) следовательно нужен интерфейс дающий возможность пройтись по всем 
 IM>   сессиям - итераторы.
 
 Hу, грязным хаком можно просто выгрести select id from session или 
 прочитать каталог для A::S::File :)
 
 IM>Типа:
 IM>$session=tied(%s)->first_id;
 IM>do {
 IM>    my %s;
 IM>    tie %s, 'Apache::Session::MySQL', $session, $params;
 IM>    tied(%s)->delete if $s{time}+60*20<time;
 IM>} while($session=tied(%s)->next_id);
 
 Интерфейс странный весьма, на perl непохожий :)
 
 Мне бы так больше понравилось:
 
 foreach $s (tied(%s)->session_list) {
   ...
 }
 
 -- 
  /"\                                                 
  \ /     ASCII ribbon campain
   X      against HTML mail and news
  / \ 
 
 --- FIDOGATE 4.4.0-snp10
  * Origin: Zenon N.S.P. news server (2:5020/52.0)
 
 

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

 Тема:    Автор:    Дата:  
 как удалять старые сессии в 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/2848987f367bf.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional