For Programmers: Free Programming Magazines  


Home > Archive > PERL POE > June 2005 > Re: LaDBI multiple connections problem Re: SimpleDBI - the









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Re: LaDBI multiple connections problem Re: SimpleDBI - the
Alex

2005-06-09, 4:00 am

> I can only guess at your problem because you never
>explained the
> nature of these "errors". Since the problem is
>identical with
> different DBI components, I'm guessing that you've
>reached a shell or
> system limit on the amount of resources you're allowed
>to consume.
>
> Talk to your system administrator about your system's
>resource limits.



Yes, Postgres max_connections=200, I just need to make
about 180 DBI sessions and use it.

As I said before, I use Randal Schwartz`s script
(http://www.stonehenge.com/merlyn/Li...l41.listing.txt).
I`ve added DBI package to save all extracted links to DBI.

Each time when I add a query to DBI I create new session
and then there are more than 197 sessions there are
errors...


Code below:
________________________

....
use constant LADBI => "ladbi";
POE::Component::LaDBI->create( Alias => LADBI );
my $r;
for(my $j=1;$j<3;$j++)
{
for(my $i=1;$i<=150;$i++)
{
POE::Component::My::DBI->spawn(SQL => $SQL,EVENT =>
"insert");
print "$j : $i\n";
}
sleep 1;
}
$poe_kernel->run;
exit 0;

BEGIN {
package POE::Component::My::DBI;
use POE::Session;


sub spawn {
my $class = shift;
POE::Session->create(
package_states => [$class => [qw(_start _stop selectall
dberror shutdown display insert check_do_results)]],
heap => [EMAIL PROTECTED]
);
}
sub _start {
# print $_[HEAP]->{EVENT};
$_[KERNEL]->post( ladbi => "connect",
SuccessEvent => $_[HEAP]->{EVENT},
FailureEvent => "db",
Args => ["dbi:Pg:dbname=data", "someuser", "somepass"],
);
}
sub _stop {
my($dbh_id)[EMAIL PROTECTED];
print "stop it\n";
$_[KERNEL]->post( ladbi => "disconnect",
SuccessEvent => "error",
FailureEvent => "dberror",
HandleId => $dbh_id);
}
sub selectall {
print "nofate\n";
my($dbh_id)[EMAIL PROTECTED];
$_[HEAP]->{dbh_id}=$dbh_id;
print $dbh_id;
$_[KERNEL]->post( ladbi => "selectall",
SuccessEvent => "display",
FailtureEvent => "dberror",
HandleID => $dbh_id,
Args => [$_[HEAP]->{SQL}]);
}
sub insert {
my($dbh_id)[EMAIL PROTECTED];
$_[KERNEL]->post( ladbi => "do",
SuccessEvent => "check_do_results",
FailureEvent => "dberror",
HandleId => $dbh_id,
Args => [$_[HEAP]->{SQL}]);
}
sub check_do_results {
$r++;
print "do ok $r\n";
}
sub display {
print @_[HEAP]->{SQL};
my ($dbh_id,$datatype,$data)= @_[ARG0..ARG2];
for my $row(@$data)
{
print join(",",@$row),"\n";
}
}
sub dberror {
print "error";
# $_[KERNEL]->yield("shutdown");
}
}

__________________________________

Thank you very much.


---
Professional hosting for everyone - http://www.host.ru
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com