Article View: pl.comp.lang.perl
Article #52291Re: obiekty + fastcgi - destruktor nie działa?
From: Andrzej Adam Filip
Date: Wed, 28 Sep 2011 17:31
Date: Wed, 28 Sep 2011 17:31
67 lines
3611 bytes
3611 bytes
Mateusz Szczyrzyca <mateusz@abstynenci.pl> pisze:
> Witam serdecznie,
>
> Mam małą aplikację z użyciem FCGI. Powiedzmy, że użyję przykładu Pralni.
>
> Mam w niej powiedzmy Pralka.pm (obiekt)
>
> W tym obiekcie mam różne funkcje (pranie(), plukanie(), itp), w tym jedna
> metoda (np: programator()), która bada zmienną przesłaną do obiektu Pralka z
> poziomu pętli FCGI i dopiero odpalająca odpowiednie funkcje.
>
> O ile wewnątrz obiektu Pralka użyję jakieś inne obiekty
> (np: Pompa.pm, Suszarka.pm) to z nimi jest wszystko ok. Natomiast problem
> jest z Pralką, dezaktywuję ją w głównej pętli FCGI ,,książkowo'' czyli
> za pomocą `undef` jak widać na poglądowym kodzie:
>
> #v+
> my $request = FCGI::Request( );
> while( $request->Accept( ) >= 0 )
> {
> [ tutaj różne takie ]
>
>
> switch( $url )
> {
> case( /wstepne/ )
> {
> $Pralka = Pralka-new( \%Pranie );
> $html1 = $Pralka->programator( 'silnik' );
> $html2 = $Pralka->programator( 'pompa' );
> $html3 = $Pralka->programator( 'pranie_wstepne' );
> $Pralka = undef;
> }
> }
>
> [ $html[1-3] później użyte do umieszczenia w kodzie HTML ]
>
> }
> #v-
>
> Jednakże destruktor Pralki się w ogóle nie zgłasza. Normalnie bym to
> zignorował, ale powstał z tego tytułu pewien problem... otóż każda
> funkcja z obiektu Pralka mi się 2x wykonuje, każda. Sprawdzałem,
> program, bazę danych, i to niestety prawda...
>
> Oczywiście sprawdziłem i żadna z funkcji nie jest zapętlona, żadnych tam
> rekurencji i w ogóle nie powinno to 2x więcej wody i prądu zużywać. :-)
> Oczywiście próbowałem $Pralka = undef, undef $Pralka, ale Pralka wydaje
> się być nieśmiertelna.
>
> Nie wiem... może coś przeoczyłem, ale proszę o drobną wskazówkę co
> jest powodem nieśmiertelności tej pralki u mnie... a tym samym dwukrotnego
> odpalania się wywoływanych metod... chyba, że to cecha FCGI i permamentnego
> uruchomienia?
>
> Dzięki z góry,
> Pozdrawiam
Spróbuj jawnie wymuszać zakres:
my $Pralka = Pralka-new( \%Pranie );
--
Andrzej Adam Filip : anfi@onet.eu : Andrzej.Filip@gmail.com
Ludzie byli dawniej bliżsi sobie. Musieli. Broń nie niosła daleko.
-- Lec, Stanisław Jerzy (1909-1966)
Technical Details
Message-ID:
<i3vwwvcqx5-B9S@susan.huge.strangled.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.stw-bonn.de!newsreader4.netcologne.de!news.netcologne.de!feeder.news-service.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mailReferences:
<slrnj83m52.spb.mateusz@jabber.abstynenci.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.stw-bonn.de!newsreader4.netcologne.de!news.netcologne.de!feeder.news-service.com!eternal-september.org!feeder.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Andrzej Adam Filip <anfi@xl.wp.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: obiekty + fastcgi - destruktor nie działa?
Date: Wed, 28 Sep 2011 19:31:37 +0200
Organization: It's for me to know and for you to find out
Lines: 67
Message-ID: <i3vwwvcqx5-B9S@susan.huge.strangled.net>
References: <slrnj83m52.spb.mateusz@jabber.abstynenci.pl>
Mime-Version: 1.0
Injection-Info: anfi.eternal-september.org; posting-host="w0CVMJvOHOmyHiW+dqvTWQ"; logging-data="14127"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/i6D7fzS9vod4VphnZc484"
X-Face: x!RCZuWd!~zy[WZ--'Or^Sg%4CS|m{fI',,mn]{v48gP6t<T}6E3\^w6l";f\KKk}b4f9CD Tx8UwgYFn@L{y\`J:sm/-*OvU^n{I8o>r9LaE!Sw#;.(U,saf9UdWF+9D9oyXCRUHAw=",9%P~.{jz :e7&c^rlc@F-X}f!"@Vc^jEZ0F%)&&rEC&9!B<Rb#~~*D0j%rk2tiUT{~o4,`N\y(PxPq*4<9>%&o^ +]]R6
Cancel-Lock: sha1:GGWOM+c2JAGMjz+66jmDgRKvNhk= sha1:SPrIWhQ6cSg5qUdP+rF+yAHgH5k=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit