[Moscow.pm] mod_perl + Object Oriented

Natalya Savenkova name2rnd на gmail.com
Пн Ноя 24 11:10:57 PST 2014


Развеяли мои сомнения, а-то я начала думать, что схожу с ума.

Savenkova Natalya
name2rnd на gmail.com
http://facebook.com/name.rnd

> On 24 нояб. 2014 г., at 21:49, Victor Efimov <victor на vsespb.ru> wrote:
> 
> Если при этом, после форка, в процессах будет выделяться память разное
> количество раз и/или разных объёмов, то конечно, будут разные адреса.
> 
> $ perl -E 'my $x = {} if fork; say $$, " ", {}'
> 27714 HASH(0xc66b90)
> 27715 HASH(0xc66998)
> 
> 
> 
> 24 ноября 2014 г., 21:46 пользователь Victor Efimov <victor на vsespb.ru> написал:
>> Ничего не знаю про mod_perl, но адреса и так одинаковые у разных
>> процессов скопированных из одного (это в случае с fork)
>> 
>> $ perl -E 'fork; say $$, " ", {}'
>> 27667 HASH(0xf0b998)
>> 27668 HASH(0xf0b998)
>> 
>> 
>> 
>> 24 ноября 2014 г., 21:14 пользователь Natalya Savenkova
>> <name2rnd на gmail.com> написал:
>>> Здравствуй, любимое сообщество!
>>> Подскажи мне, пожалуйста, что мне надо почитать/посмотреть, чтобы понять
>>> следующую вещь.
>>> 
>>> Вот есть у меня mod_perl с handlers
>>> Есть у меня там функция такая, которая дальше вызывается в обработчиках, она
>>> не вызывается при запуске, а только когда пришел первый запрос:
>>> 
>>> package MyLib::Handler;
>>> use MyLib::Obj;
>>> sub obj {
>>>  our $obj;
>>>  warn 'obj ', $obj, $obj->{ pid } if $obj;
>>>  return $obj if $obj;
>>>  $obj = MyLib::Obj->new( pid => $$);
>>> }
>>> 
>>> Вот этот Obj;
>>> package MyLib::Obj;
>>> sub new {
>>>    my $package = shift;
>>>    my $opt = {@_};
>>>    my $self = {};
>>>    $self->{ pid } = $opt->{ pid };
>>>    return bless($self, $package);
>>> }
>>> 
>>> pid сюда добавлен для дебага, чтобы в логах было видно, кто создал obj
>>> 
>>> и обвес на warn
>>> BEGIN {
>>>        $SIG{'__WARN__'} = sub {
>>>        warn $$.' --> '.$_[0] ;
>>>        };
>>> }
>>> 
>>> И получается, что в логах выглядит вот так
>>> 
>>> 16373 --> obj MyLib::Obj=HASH(0x80461c420) 16373
>>> 16372 --> obj MyLib::Obj=HASH(0x80461c420) 16372
>>> 
>>> Почему тут одинаковые адреса?
>>> Сообщество, помоги!
>>> 
>>> --
>>> Moscow.pm mailing list
>>> moscow-pm на pm.org | http://moscow.pm.org
> -- 
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org


Подробная информация о списке рассылки Moscow-pm