Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: Using fork with DBI to create simultaneous db connections.

by thor (Priest)
on Feb 08, 2005 at 04:26 UTC ( [id://428911]=note: print w/replies, xml ) Need Help??


in reply to Re: Using fork with DBI to create simultaneous db connections.
in thread Using fork with DBI to create simultaneous db connections.

The good way to check would be to have your program fork, let each child open a connection, then sleep for a minute or something. During that time, log on to the database using another tool (Toad or DB-Artisan or something) and see how many connections are in your name. If the numbers agree, you're done.
...or, you could have each child just print the database handle. Like all perl objects, it's just a reference, so it should print something like DBI::db=HASH(0x1223456). If they all print the same reference, done. No monkeying around on the database at all (well, except the DBI calls that is...but you already knew that :P).

thor

Feel the white light, the light within
Be your own disciple, fan the sparks of will
For all of us waiting, your kingdom will come

  • Comment on Re^2: Using fork with DBI to create simultaneous db connections.

Replies are listed 'Best First'.
Re^3: Using fork with DBI to create simultaneous db connections.
by etcshadow (Priest) on Feb 08, 2005 at 05:34 UTC
    Actually, that's incorrect, and it's probably the same mistake that the original poster made. The flaw is that the memory address shown as part of the stringification of the reference is the *relative* memory address to that process. The operating system uses something called "virtual memory", which abstracts the actual *physical* memory location away from your processes. In truth, the physical memory addresses may change from time to time, as your process is swapped and paged and so on.

    Anyway, here's a quick demo:

    prompt> perl -le 'my $pid = fork; my $x = [$pid]; print "$x->[0] -- $x +"' 0 -- ARRAY(0x80d11ec) 24694 -- ARRAY(0x80d11ec) prompt>
    You can see that each process has it's own array, with the reference stored in $x, yet in both processes, the memory address appears the same.
    ------------ :Wq Not an editor command: Wq
      Hell...I learned something. Not that that's bad...I just don't like being wrong. :)

      thor

      Feel the white light, the light within
      Be your own disciple, fan the sparks of will
      For all of us waiting, your kingdom will come

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://428911]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2024-04-26 08:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found