|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/305411bcd9d44.html, оценка из 5, голосов 10
|