Re: [Discuss] Add PDO disconnect() and isConnected()

From: Date: Wed, 01 Oct 2025 07:28:36 +0000
Subject: Re: [Discuss] Add PDO disconnect() and isConnected()
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-128751@lists.php.net to get a copy of this message
> Le 30 sept. 2025 à 23:07, Larry Garfield <larry@garfieldtech.com> a écrit : > > On Tue, Sep 30, 2025, at 3:08 PM, Claude Pache wrote: >>> Le 30 sept. 2025 à 17:40, Larry Garfield <larry@garfieldtech.com> a écrit : >>> >>> >>> What would be valuable is easier RE-connection logic. Either PHP or MySQL may >>> terminate an idle connection, which is a concern in long-running processes (Queue workers, ReactPHP, >>> Franken, etc.). Tools like Doctrine have built their own refresh logic in, although they're >>> not always consistent with each other or obvious to use. Having some kind of reconnection logic >>> built into PDO that "just works" would be very valuable. >>> >>> What that would look like, I'm not sure. Just spitballing: >>> >>> // After X seconds, drop and reopen the connection the next time it's used. >>> $pdo->reconnectAfter($seconds); >>> >>> --Larry Garfield >> >> Auto-reconnection is dangerous, because database engines are stateful. >> For example, disaster will happen if disconnection had occurred in the >> middle of a transaction... >> >> —Claude > > All the more reason that the logic should be implemented once in PDO and then shared, rather > than everyone having to figure it out in user space themselves. > > I'm not suggesting that PDO actively try to disconnect all the time. But if the > connection is "stale," it should be able to restart it without making the user faff about > to do so. (Whether that's via detecting that it's gone away, a timer, or whatever else, > I'm very flexible.) > > --Larry Garfield Database connections are full of state (apart from transactions, there are also sql variables, temporary tables, and probably other stuff I am not aware of), thus auto-reconnection cannot be transparent in the general case. In specific scenarios, this is ok, but I doubt that it is best managed by a generic extension like pdo. —Claude

« previous php.internals (#128751) next »