Thread Timeout ohne ARLM? (3 answers)
Opened by Gast at 2007-05-12 19:17

bloonix
 2007-05-13 18:41
#76669 #76669
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=betterworld,12.05.2007, 23:10]
Code: (dl )
$socket->timeout(10);
[/quote]
Hierbei sollte man nur beachten, dass $socket->accept bei
einem Timeout selbstverständlich undef zurück liefert. Falls
man also auf eingehende Requests in einer Schleife wartet,
würde das Skript beendet werden:

Code: (dl )
1
2
3
4
5
6
7
8
$socket->timeout(5);

while (my $c = $socket->accept) {
  # request Verarbeitung
}

close($socket);
exit(0);


Um das zu umgehen, kann man einfach eine weitere Schleife
drum herum benutzen:

Code: (dl )
1
2
3
4
5
6
7
8
9
$socket->timeout(5);

while ( 1 ) {
  warn "listen for incoming requests";
  while (my $c = $socket->accept) {
     warn "request comes in from ", $c->peerhost;
  }
  warn "socket timeout";
}


Ein weiterer Vorteil der äußeren Schleife ist, dass man dort
mit last oder next hinspringen kann, falls man
mit einem eingehenden Request nicht einverstanden ist.\n\n

<!--EDIT|opi|1179067349-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Timeout ohne ARLM?