This is an interesting point, but I think a database might be more

similar to a network socket than a file handle.



I have this same observed behaviour under Oracle and PostgreSQL, so it's

not limited to mysql (and shouldn't be fixed with mysql specific flags).



On 5/9/2007, "Jeff Pang" <[EMAIL PROTECTED]> wrote:



>

>

>-----Original Message-----

>>From: Chas Owens <[EMAIL PROTECTED]>

>>Sent: May 10, 2007 12:02 AM

>>To: Jeff Pang <[EMAIL PROTECTED]>

>>Cc: beginners-list <beginners@perl.org>

>>Subject: Re: forking problem with dbd::mysql

>>

>>On 5/9/07, Jeff Pang <[EMAIL PROTECTED]> wrote:

>>snip

>>> But still has a question for me.We may see this similiar destroy method o
n DBI class,

>>>

>>> sub DESTROY

>>> {

>>>     my $self = shift;

>>>     my $dbh = $self->{'dbh'};

>>>     if ($dbh) {

>>>         local $SIG{'__WARN__'} = sub {};

>>>         $dbh->disconnect();

>>>     }

>>> }

>>>

>>> Ok where in child when going out of scope the $dbh should get disconnecte
d.

>>> But why this would affect the $dbh in parent?As we know,when forking chil
d get a

>>> full copy of $dbh from parent and it's separate to parent's $dbh.

>>snip

>>

>>But the connection information in the $dbh is the same, so when the

>>child disconnects it tells the MySQL server to destroy the connection.

>> This means that the parent loses its connection unexpectedly.

>

>

>Yes but I think is this maybe a bug in DBI class?For example,open a file han
dle and after forking child close that handle,this would not affect parent's 
handle.

>The codes below show the case,

>

>use strict;

>use warnings;

>

>open HDW,">","test.txt" or die;

>select HDW;$|++;select STDOUT;

>my $pid = fork;

>die "can't fork" unless defined $pid;

>

>unless ($pid) {

>    for (1..10) {

>        print HDW "child $_\n";

>        sleep 1;

>     }

>    exit 0;

>

>} else {

>    for (1..100) {

>        print HDW "parent $_\n";

>        sleep 1;

>     }

>}

>

>__END__

>

>parent would continue to write till end at 100.

>

>

>--

>mailto:[EMAIL PROTECTED]

>http://home.arcor.de/jeffpang/

>

>--

>To unsubscribe, e-mail: [EMAIL PROTECTED]

>For additional commands, e-mail: [EMAIL PROTECTED]

>http://learn.perl.org/

>

>

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to