php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #12885 don't agree to the persistent connection manual section
Submitted: 2001-08-21 17:03 UTC Modified: 2002-06-10 04:15 UTC
From: stefan dot priebsch at e-novative dot de Assigned:
Status: Closed Package: Documentation problem
PHP Version: 4.0.6 OS: win98
Private report: No CVE-ID: None
 [2001-08-21 17:03 UTC] stefan dot priebsch at e-novative dot de
When I did the following:
1. handle a = pconnect to a mysql db, say user "root", no password, host=localhost
2. select database "a"
3. handle b = pconnect to same mysql db, user "root", no password, host=localhost
4. select database "b"

If i run a query against the database using handle a, it will have database b selected. However, the manual says on persistent connections:

<quote>
An important summary. Persistent connections were designed to have one-to-one mapping to regular connections. That means that you should always be able to replace persistent connections with non-persistent connections, and it won't change the way your script behaves. It may (and probably will) change the efficiency of the script, but not its behavior! 
</quote>

This does *not* hold true, at least for mysql persistent connections in that case.

If this behaviour is not by design in 4.0.6 on Win 98, I will be happy to provide more information if required.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-08-21 18:15 UTC] jah@php.net
This problem seems to stem from the fact that different
databases have a different notion of a connection. Some
have just a connection to the database engine and there is
a possibility to change the database within a connection,
like MySQL, and others think the connection to be to a
specified database.

Personally, I think what 'a persistent connection' means
with different databases should be clarified with each
case and the current implementation left as it is. Although
I can think about the problems it will cause to the people
writing any kind of database abstration layers... :(

I'd say that there just isn't a *simple* solution to this
problem. Hints about a complex solution appreciated.
 [2001-08-22 05:50 UTC] stefan dot priebsch at e-novative dot de
I agree that the implementation's behaviour is by design.
PHP has no general means of accessing any database and that is how it was designed. So you can not expect a command like pconnect to behave the same way for every database.
However, the manual *must* be much clearer about this or some people will run into serious trouble sooner or later.
Basically, I think this whole topic comes down to the question when/if there will be one generalized database interface in php one day (or for php one day, how about PEAR?). Maybe some PEAR insider could comment on this.

For now, we all have to keep in mind that each database will have to be treated differently. But please, save others a lot of time and effort and make changes to the manual ASAP. I have amended a note to mysql_pconnect today as a start.

Stefan
 [2002-06-10 04:15 UTC] mfischer@php.net
This behaviour actually is true. If you open two *normal* mysql connections with the same credentials then handle b is not a new handle but actually the same as a (even if it has a different resource id), closing.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Apr 27 03:01:29 2024 UTC