use DB_File;
my @dbs; # array of hash references
my @dbModTime; # mod times of db files
my @dbfns; # array of database pathnames
# executed before fork into child processes
sub post_config {
my $db;
my $s = $_[3];
# tie the DBs and get their mod times
for ($db = 0; $db < @dbfn; $db++) {
$dbs[$db] = {};
tie %{$dbs[$db]}, "DB_File", $dbfn[$db], O_RDONLY
or die ((caller 0)[3]. " can't tie " . $dbfn[$db] . ": $!");
$dbModTime[$db] = (CORE::stat($dbfn[$db]))[9]
or die ((caller 0)[3]. " can't stat " . $dbfn[$db] . ": $!");
}
}
####
use threads;
use threads::shared;
my @dbs :shared; # array of hash references
my @dbModTime :shared; # mod times of db files
####
for ($db = 0; $db < @dbfn; $db++) {
$dbs[$db] = shared_clone({});
tie %{$dbs[$db]}, "DB_File", $dbfn[$db], O_RDONLY
or die ((caller 0)[3]. " can't tie " . $dbfn[$db] . ": $!");
$dbModTime[$db] = (CORE::stat($dbfn[$db]))[9]
or die ((caller 0)[3]. " can't stat " . $dbfn[$db] . ": $!");
$s->log->notice ($dbfn[$db]." has "
.scalar(keys(%{$dbs[$db]}))." entries");
}
####
httpd in free(): error: chunk is already free
####
Abort trap (core dumped)
Error invoking apachectl start command