2013/2/8 Daniel Podolsky <[email protected]>:
> День добрый!
>
> хочу пул коннектов к базе, и, мало того - хочу его один на несколько тредов.
>
> Бывает ли так в современном перле?

Не понимаю проблемы. Что вы сделали и что у вас не получилось?

У меня нет треженого перла, но вот форки шарят пул из трех коннектов:

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
> [email protected] | http://moscow.pm.org



-- 
Best regards, Ruslan.
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить