Thread Einfache While-Schleife bis Interverbindung da ist (7 answers)
Opened by kami at 2010-09-04 14:13

Dubu
 2010-09-05 15:06
#141191 #141191
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
unless macht keine Schleife sondern ist das logische Gegenteil von if. Du brauchst aber immer noch die Schleife:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
while (! online('http') && $count < 30) {
    sleep 1;
    $count++;
}
# Schleife wurde beendet; sind wir jetzt Online oder nicht? 
# Alternativ hier auf den Wert von $count testen, dann wird der
# Online-Test nicht noch mal ausgeführt.
unless ( online('http') ) {
    die "bäh, nicht online...\n";
}


Wie kristian schon gezeigt hat, kann diese Schleife aber deutlich länger als 30 Sekunden laufen, je nachdem, wie lange der Aufruf von online() dauert. Dort wird im schlechtesten Fall abgebrochen, wenn drei Sites nicht erreichbar sind, und das mit jeweils einem Timeout von 30 Sekunden, wie kristian auch geschildert hat. Dein Test könnte also bis zu ca. 30 * (3 * 30 + 1) = 2730 Sekunden, also ca. 45 Minuten dauern. Deshalb wäre z.B. esskars Vorschlag besser.

View full thread Einfache While-Schleife bis Interverbindung da ist