Re: [PDO] Question on Persistent PDO Connections

[email protected] (Ulf Wendel) Fri, 06 Nov 2009 14:30:07 +0100
Newsgroups php.pdo
Message-ID <[email protected]>
Lester Caine schrieb:
> Ulf Wendel wrote:
>> Lester Caine schrieb:
>>> Ulf Wendel wrote:
>>>> Lukas Kahwe Smith schrieb:
>>>>> well for mysql traditonally persistent connections came with the 
>>>>> risk of an unclean session. i guess there is now a solution to 
>>>>> clean up the session fairly well, making persistent connections 
>>>>> more feasible, 
>>>>
>>>> COM_CHANGE_USER/mysql_change_user() cleans up the line. The call 
>>>> itself exists since quite some time. In its early days (say more 
>>>> than three years ago) it was known to have issues. But its working 
>>>> fine nowadays.
>>>>
>>>> Its possible to clean up the line before reuse, if wanted. Calling 
>>>> mysql_change_user is the default for ext/mysqli. However, if you 
>>>> know what you do, you may not want to clean the line for performance 
>>>> reasons.
>>>
>>> Actually Ulf that sounds a little strange when the mechanism to use 
>>> an existing connection is that your new connection MUST have the same 
>>> username and password. Ideally I think, there should be nothing 
>>
>> Not sure if I get what you say.
>>
>> mysql_change_user() (C API [1], protocol command COM_CHANGE_USER) is 
>> the MySQL way of resetting an existing connection. After the call the 
>> connection is as if its new. As server permissions can change between 
>> putting a connection into a persistent pool and reusing a connection, 
>> it is necessary to re-authenticate the user.
> 
> We are currently discussing persistent connctions 
> http://de.php.net/manual/en/function.mysql-pconnect.php in the case of 
> MySQL and using pconnect re-uses a previous connection if the username 
> and password are the same.
> 
> Actually when I look at mysql_change_user()
> http://de.php.net/manual/en/function.mysql-change-user.php it says it 
> deprecated.

And I am talking about persistent connections in general and what can or 
cannot be done with PDO and MySQL. I don't care the about ext/mysql 
interface at this point :-)

> In any case, pconnect would only fail if the user's credentials had 
> changed which would be the same as for a simple 'connect'

Well, from an implementors perspective reusing a persistent connection 
can fail if the line/pipe is gone and/or if credentials changed. In that 
case a driver can create a new connection.

 From a user perspective those things can happen transparently.

Ulf