NAME
Schedule::Poll - Evenly schedule recurring events with various intervals
SYNOPSIS
use Schedule::Poll;
# Let's run a few things every 3 seconds,
# and some things every 6 seconds
my $config = {
foo => 3,
bar => 3,
baz => 3,
zip => 6,
zoo => 6,
zat => 6
};
my $poll = Schedule::Poll->new( $config );
while(1) {
if (my $aref = $poll->which ) {
for my $each (@$aref) {
print "$each fired!\n";
}
}
sleep 1;
}
METHODS
new
Constructor. Accepts a hashref with the values being an interval in seconds. Each interval used should be a divisor of 86400.
my $poll = Schedule::Poll->new({
foo => 300 # 5 minutes
bar => 600 # 10 minutes
baz => 5 # 5 seconds
});
which
Returns an arrary reference containing the items for that current tick interval.
$poll->which;
Examples
$href = {
a => 3,
b => 3,
c => 3
};
Timeline:
interval | 1 2 3 4 5 6
---------+------------------
key | a b c a b c
$href = {
a => 3,
b => 3,
c => 3,
d => 6,
e => 6,
f => 6
};
Timeline:
interval | 1 2 3 4 5 6 7 8 9 10 11 12
---------+--------------------------------------
key | b a c b a c b a c b a c
| d e f d e f
AUTHOR
Michael Kroher, <michael at kroher.net>