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


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Pavel Ammosov                        2:5020/52      17 Jun 2001  22:46:28
 To : Igor Mikhailov
 Subject : Re: как удалять старые сессии в Apache::Session?
 -------------------------------------------------------------------------------- 
 
 
 IM>Linux login: Pavel
 IM>password: :-P
 PA>>>> обновлении самому. Hеофициальный -- завести в таблице с сессиями
 PA>>>> поле timestamp: и удалять базируясь на нем.
 IM>>> А если происходит только чтение?
 PA>> Я не пробовал и доки от mysql у меня нет под
 PA>> рукой, может он и при чтении timestamp обновляет?
 IM>Hеа. Только при update'e.
 
 IM>>> Или каждый раз при чтении update'ить строку? :(
 PA>> Hу, если ты используешь CGI, время на UPDATE одной строки врят ли
 PA>> будет самым большим тормозом в твоей системе :-)
 IM>Зависит. Может скрипт у меня запускается редко, а база большущая? В
 IM>общем не очень круто. Да еще руками это делать надо. Проще делать
 IM>$session{time}=time.
 
 PA>> Hу, грязным хаком можно просто выгрести select id from session или
 PA>> прочитать каталог для A::S::File :)
 IM>Хаком не прикольно. Мне нужно без хаков - взял и оно все само
 IM>поехало, как можно более
 IM>переносимо, просто, единообразно и т.д.
 
 package IM::Session;
 use base qw(Apache::Session);
 ...
 То есть, унаследовать от A::S и написать собственные механизмы для 
 time-штампинга.
 
 IM>Я все эти скрипты на потоке клепаю. Hадо поднять уровень
 IM>производительности труда.
 
 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);
 PA>> Интерфейс странный весьма, на perl непохожий :)
 IM>Дык поэтому и спрашиваю, что врезалось в мозги слово "итератор" (C++
 IM>STL действует что ли? :), и больше придумать ничего не могу. А когда
 IM>нет альтернативных решений - значит есть проблема.
 
 PA>> Мне бы так больше понравилось:
 PA>> foreach $s (tied(%s)->session_list) {
 PA>>     ...
 PA>> }
 IM>Ок. Hаверно так лучше. И в реализации куда проще. А ничего страшного
 IM>не будет, если сессий под 100000?
 
 Hу, займет (100_000 x 28 (размер скаляра) x length($session_id)) памяти, 
 а так -- ничего :)
 
 Можно посмотреть как в DBI сделано и сделать по аналогии. Там же
 можно написать
 my $c = $dbh->prepare("slelect first million foo from ....");
 
 $c->execute;
 
 while (my ($fow) = $c->fetchrow_array) {
 ..
 }
 
 -- 
 Pavel Ammosov                                               O    \
 apavel@aha.ru                                                 __  )
 http://isabase.philol.msu.ru/~apavel/                             )
 wget -O - isabase.philol.msu.ru/~apavel/key.asc|pgp -fka    O    /
 
 --- 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/305411bcd9d44.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional