|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/400 28 Feb 2003 23:07:53 To : Andrey Brindeew Subject : Re: Странности под mod_perl -------------------------------------------------------------------------------- Здравствуй, Andrey Brindeew. AB> Hеожиданно стали наблюдаться странности в модулях, которые используются в AB> handler'ах из-под mod_perl. Сбрасывается глобальная переменная модуля. AB> Вот код: AB> Модуль конфигурации (один бАААльшой хэш с деревом внутри): AB> ===== AB> package BK::Config; AB> use vars qw(%c); AB> %c = ( AB> 'LIBS' => { AB> 'BK::Visitor' => { AB> var1 => 'var1_value', AB> [ a lot of stuff skipped ] AB> }, AB> [ a lot of stuff skipped ] AB> }, AB> [ a lot of stuff skipped ] AB> ); AB> 1; AB> ===== AB> Модуль, в котором наблюдается сброс $pc (package's configuration) AB> ===== AB> package BK::Visitor; AB> use BK::Config; AB> use vars qw( AB> %c AB> $pc AB> ); AB> *c = \%BK_man::Config::c; AB> $pc = $c{'LIBS'}{'BK::Visitor'}; AB> ===== AB> Далее в модуле BK::Visitor $pc используется только в режиме чтения примерно AB> так: AB> my $a = $pc->{'var1'}; AB> Суть проблемы в том, что в некоторых дитенках Апача $pc после некоторого AB> момента времени сбрасывается. Hеужели придется в каждый метод в начало AB> вставлять $pc = $c{'LIBS'}{'BK::Visitor'}; ? AB> Проблема замечена уже минимум в двух разных модулях. :-( Ищи то место, где чистится $c{'LIBS'}{'BK::Visitor'}. Прямо или косвенно в каком-нибудь цикле. Его на всю систему достаточно одного. use приводит к выполнению кода, как ты понимаешь, один раз за время жизни данного ребенка, а не на каждый запрос. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/14454891b441b.html, оценка из 5, голосов 10
|