in reply to Re: Re: DBI, Apache::DBI and mod_perl - Is one connection sufficient?
in thread DBI, Apache::DBI and mod_perl - Is one connection sufficient?

I am wondering what is wrong with my setup then (if anything). If I use the mysql client to connect to the server, it shows me "Your MySQL connection id is 0 to server version: 4.0.17-nt". Then I start up Apache, do many page requests (even tried simultaneously loading 40 pages within Opera). I then go back to the mysql client and reconnect and get connection #3. This tells me that all the page requests were handled within connection #2. So...?

  • Comment on Re^3: DBI, Apache::DBI and mod_perl - Is one connection sufficient?

Replies are listed 'Best First'.
Re: Re^3: DBI, Apache::DBI and mod_perl - Is one connection sufficient?
by perrin (Chancellor) on Feb 25, 2004 at 20:26 UTC
    Read the Apache::DBI documentation. It includes instructions for activating debugging which will log whether or not new connections are being made.
Re^4: DBI, Apache::DBI and mod_perl - Is one connection sufficient?
by Anonymous Monk on Feb 25, 2004 at 20:11 UTC
    s/(?<=connection id is )0(?= to server)/1/;
Re: Re^3: DBI, Apache::DBI and mod_perl - Is one connection sufficient?
by CountZero (Bishop) on Feb 25, 2004 at 20:40 UTC
    "It's not a bug it's a feature!"

    As all requests came from the same IP, from the same client even and were probably/perhaps for the same database, there is no need to start up x connections. Apache::DBI is bright enough to recognize that fact and limit the number of connections.

    CountZero

    "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law

      Is this true? There should be no difference in execution even if it is from the same client. Multiple instances from the same client could still clash easily. Unless you are saying that same-client requests are queued and not run simultaneously.

        This what the docs say:
        if the module Apache::DBI has been loaded. In this case every connect request will be forwarded to the Apache::DBI module. This looks if a database handle from a previous connect request is already stored and if this handle is still valid using the ping method. If these two conditions are fulfilled it just returns the database handle. The parameters defining the connection have to be exactly the same, including the connect attributes! If there is no appropriate database handle or if the ping method fails, a new connection is established and the handle is stored for later re-use.
        and:
        it keeps database connections persistent on a per process basis. The problem is, if a user accesses several times a database, the http requests will be handled very likely by different servers..

        But if your requests are dealt with by the same process (which is very likely, as it is most difficult to open many simultaneous requests by hand (hint: use a stress test tool)) you use the same connection.

        CountZero

        "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law