[Moscow.pm] mod_perl + Object Oriented

Victor Efimov victor на vsespb.ru
Пн Ноя 24 10:49:18 PST 2014


Если при этом, после форка, в процессах будет выделяться память разное
количество раз и/или разных объёмов, то конечно, будут разные адреса.

$ 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