Schrift
[thread]11013[/thread]

Apache2 cleanup_register



<< >> 1 Eintrag, 1 Seite
Gast Gast
 2007-12-12 20:29
#103803 #103803
Hi,

ich möchte eine Applikation von Apache1 nach Apache2 portieren.
An einigen Stellen verwenden wir einen cleanup-handler, und dessen Migration tut nicht was sie soll.
Der Code :
================================
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub cleanup {
  my $arg = shift;
  for (1 .. $arg->{cnt} ) {
    print STDERR "$_ = ", $arg->{name}, "\n";
    sleep(1);
  }
}

sub T_cleanup {
  my $self= shift;

#  my $r = $self->{__apache_req__};
#  $r->pool->cleanup_register (\&cleanup, {name=> 'test', cnt=>10});
   my $p = APR::Pool->new(); 
  $p->cleanup_register (\&cleanup, {name=> 'test', cnt=>10});
  $self->redirect(path=>'/index.html');
}

==============================
Das ganze läuft in einer MasonX::WebApp Umgebung.
Wenn ich nun die Methode
T_cleanup aufrufe, würde ich erwarten, dass der redirect sofort ausgeführt wird, und die cleanup methode danach. Tatsächlich ist es aber so, dass erst cleanup 10 sec lang arbeitet, und dann der redirect ausgeführt wird (also wie ohne cleanup_handler ).

Das Verhalten ist identisch, ob ich ein neues Pool Objekt verwende oder das des vorhanden request (auskommentiert) verwende.

Was ist da verkehrt ?


Rolf
<< >> 1 Eintrag, 1 Seite



View all threads created 2007-12-12 20:29.