NAME
Jonk::Cookbook::ForkModel - with Parallel::Prefork.
USAGE
prefork worker script:
#! perl
use strict;
use warnings;
use Parallel::Prefork;
use DBI;
use Jonk::Worker;
use Your::Worker;
my $pm = Parallel::Prefork->new({
max_workers => 10,
trap_signals => {
TERM => 'TERM',
HUP => 'TERM',
},
});
while ($pm->signal_received ne 'TERM') {
$pm->start and next;
my $dbh = DBI->connect('dbi:mysql:test','user','pass');
my $jonk = Jonk::Worker->new($dbh => {functions => [qw/worker_key/]});
while (1) {
if (my $job = $jonk->dequeue) {
Your::Worker->work($job);
} else {
sleep(3); # wait for 3 sec.
}
}
$pm->finish;
}
$pm->wait_all_children();