|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexey Gavluk 2:5020/400 16 Apr 2003 16:36:02 To : All Subject : mod_perl2. lost hash data between requests -------------------------------------------------------------------------------- Привет Алл! mod_perl2. У меня есть данные, хранящиеся между запросами в некотором "менеджере" вот таким вот финтом. ===Manager.pm=== package Manager; $Manager::Obj = Manager->new(); sub new { my $class = shift; my $self = {}; $self->{storage} = {}; $self->{creation_time} = time; bless($self, $class); return $self; } .... =============== ====httpd.conf===== PerlRequire Manager.pm ================ В своем неком хендлере я посредством $Manager::Obj->some_method(); манипулирую внутренним хешмапом. Так вот, если я в броузере делаю рефреш очень часто, то эти данные внутри хеша слетают. Если нажимать рефреш раз в секунду -- то все четко остается на месте (Data::Dumper) печатает одни и те же данные от запроса к запросу. Hо стоит подержать неменого Cntrl+R в броузере... данные исчезают. Думал что теряется сам объект-менеджер.... Ан нет, при выводе его адреса он прежний.... Я даже в конструкторе поставил ему время создания в одну из переменных (creation_time)... Оно тоже не меняется. А вот, блин, содержимое $self->{storage}->{*} слетает.... :-((( Следует отметить что этот сторедж опрашивается по нескольу раз при каждом запросе, т.е. часто. Похоже на какую-то коллизию по обращению, но которая не валит приложение, а стирает {storage}. Что это может быть.... Если я прав касательно коллизий, то в Java я объявил бы методы работы со {storage} как "synchronized" и тогда никаких конкуренций бы не было.... А что в Перле можно сделать, и вообще, верно ли я грешу на коллизии??? Спасибо. --- ifmail v.2.15dev4 * Origin: Svit Online (post does not reflect views of Golden Tele (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/16795d17da570.html, оценка из 5, голосов 10
|