Thread Skript für automatische Backups (27 answers)
Opened by mollilinux at 2010-02-23 14:06

sid burn
 2010-02-23 18:47
#133549 #133549
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ich würde deine ganzen Zeitabfragen vollständig vergessen. Das was du da tust ist praktisch eine Event Schleife nachzubauen. Soetwas kann man eleganter lösen mit vorhandenen Modulen wie zum Beispiel AnyEvent.

Wenn du jede 5 Sekunden etwas ausführen möchtest:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use AnyEvent;

# Used for Main Loop
my $main = AnyEvent->condvar;

# call callback every 5 seconds - first time starts immediately
my $t = AnyEvent->timer( interval => 5, cb => sub {
    print scalar localtime, "\n";
});

# Enter Main Loop
$main->recv;


Das fügt aber praktisch jede 5 sekunden einen timer hinzu. Wenn dein callback länger als 5 sekunden dauert ist das nachteilig weil dann deine "interne kette" immer weiter anwächst. Dann musst du es so Programmieren das du ein Event ausführst, und erst nachdem sich das event beendet hat wieder ein neues Event hinzufügst das erst wieder nach 5 sekunden ausgeführt wird. Das geht dann so:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use AnyEvent;

# Used for Main Loop
my $main = AnyEvent->condvar;

print scalar localtime, "\n";

# After 5 seconds
my $t;
$t = AnyEvent->timer( after => 5, cb => \&print_time );

# Enter Main Loop
$main->recv;

sub print_time {
    sleep 10;
    print scalar localtime, "\n";
    $t = AnyEvent->timer( after => 5, cb => \&print_time );
}
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Skript für automatische Backups