All using ForkManager. Children die and close their DB handles in order.
Quickly post:
foreach my $ln (@lines) {
$pm->start && next;
** child starts
my $dbh = $this->_child_db();
... code here
** child finishes with _close_child();
$this->_close_child();
$pm->finish
}
$pm->wait_all_children()
_child_db() {
if (!$this->{'_dbh-child')) {
print $$ . ": Creating Child DB Handle";
$this->{'_dbh-child'} = new DBI::Connect ......;
}
return $this->{'_dbh-child'};
}
_close_child() {
print $$ . ": Closing child DB Handle";
$this->{'_dbh-child'}->disconnect();
delete($this->{'_dbh-child'});
}
Very rough, please don't try to compile it. All my code is on an internal system not connected to the internet.
My code is all very verbose. Everything is working correctly and in order. All children to finish, total 6 processes max ever within top. Finish is always seen before a Start.
-- philip
We put the 'K' in kwality!