[Moscow.pm] perl cross-thead db con pool
Ruslan Zakirov
ruz на bestpractical.com
Пт Фев 8 09:08:49 PST 2013
2013/2/8 Daniel Podolsky <onokonem на gmail.com>:
> День добрый!
>
> хочу пул коннектов к базе, и, мало того - хочу его один на несколько тредов.
>
> Бывает ли так в современном перле?
Не понимаю проблемы. Что вы сделали и что у вас не получилось?
У меня нет треженого перла, но вот форки шарят пул из трех коннектов:
use strict;
use warnings;
use DBI;
use Time::HiRes 'sleep';
my @pool;
push @pool, DBI->connect('dbi:mysql:', 'root', undef, { RaiseError => 1 })
for 1..3;
for (1..10) {
child() unless fork;
}
1 while wait > 0;
sub child {
print "child: $$\n";
$_->{'InactiveDestroy'} = 1 foreach @pool;
my $i = int rand @pool;
for (1..15) {
my $tables = $pool[$i]->selectcol_arrayref(
"select table_name from INFORMATION_SCHEMA.TABLES WHERE
table_schema = ?",
undef, 'mysql',
);
print "$i: $$: ". join (',', @{$tables}[0..2]) ."...\n";
sleep rand 0.3;
}
print "done: $$\n";
exit;
}
Есть проблема с InactiveDestroy. У меня он почему-то блокирует
приложение в конце, но без него тоже нельзя. Нуно баг репортить и
смотреть внимательней.
> Спасибо.
>
> С уважением,
> Даниил Подольский
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Best regards, Ruslan.
Подробная информация о списке рассылки Moscow-pm