diff options
| author | Paul Buetow <paul@buetow.org> | 2011-05-30 19:30:13 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2011-05-30 19:30:13 +0000 |
| commit | 7940ed0177b210526662c698cadef26913ba0ed6 (patch) | |
| tree | 4a2191523db0e1a0742f65665f16b1063877fc6f /lib | |
| parent | b7189bab044a37877012846ef0b17b08032e7e89 (diff) | |
Time::HiRes job scheduling support
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/PerlDaemon/PerlDaemon.pl | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/PerlDaemon/PerlDaemon.pl b/lib/PerlDaemon/PerlDaemon.pl index 58e9755..15c29a4 100644 --- a/lib/PerlDaemon/PerlDaemon.pl +++ b/lib/PerlDaemon/PerlDaemon.pl @@ -7,6 +7,7 @@ use warnings; use Shell qw(mv); use POSIX qw(setsid strftime); +use Time::HiRes qw(gettimeofday tv_interval); use PerlDaemon::Logger; use PerlDaemon::RunModules; @@ -148,10 +149,19 @@ sub daemonloop ($) { my $loopinterval = $conf->{'daemon.loopinterval'}; my $loop = shift; - for (my $i = 1;;++$i) { - $rmodule->do(); - sleep $loopinterval; - alive $conf; + my $lastrun = [0,0]; + + for (;;) { + my $now = [gettimeofday]; + my $timediff = tv_interval($lastrun, $now); + + if ($timediff >= $loopinterval) { + $lastrun = $now; + $rmodule->do(); + alive $conf; + } + + sleep $loopinterval / 10; } } |
