Thread Skript für automatische Backups
(27 answers)
Opened by mollilinux at 2010-02-23 14:06
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
|