Bug #13463 Updated: Persistent connections with different usernames not being reused
| From: | yohgaki@php.net | Date: | Thu, 06 Dec 2001 05:05:51 +0000 |
| Subject: | Bug #13463 Updated: Persistent connections with different usernames not being reused | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-72715@lists.php.net to get a copy of this message | ||
ID: 13463
Updated by: yohgaki
Reported By: chriskl@familyhealth.com.au
Status: Bogus
Bug Type: PostgreSQL related
Operating System: FreeBSD 4.4
PHP Version: 4.0.6
New Comment:
Does other db module close persistent connection if number of persistent connections reache max
persistent connections? Closing connection can be a problem, though.
Anyway, If you use all connection to pgsql with persistent connection, you cannot make any new
connections obviously. Therefore, there is php.ini entry to limit max number of persistent
connections.
If other db modules close persistent connections when max persistent connection is reached,
I'll work on it. (If it feasible)
Previous Comments:
------------------------------------------------------------------------
[2001-12-05 22:44:26] chriskl@familyhealth.com.au
I don't propose re-using an existing connection with different parameters at all! What
I'm saying is that if PHP hits the max database pconnections, and it needs to open another,
then it should destroy an old one, and then create the new one, rather than just dying.
I use PHP 7.1.3, with 64 simultaneous connections. It's not feasible to up to 1024 connections
as you need to allocate a heap of shared memory buffers, equivalent to double the max connections.
Anyway, the solution is not to tell someone to 'increase their max connections', the
solution is to fix the problem...
------------------------------------------------------------------------
[2001-12-05 22:22:06] yohgaki@php.net
I understand your problem, but I think resuing existing connection that has different connection
parameter will be a cause of hard to find bug or even a security hole.
Older PostgreSQL accepts really few number of connections. 7.1.x supports upto 1024 connections by
default (You need to edit postgresql.conf) I suggest to upgrade your server....
--
Yasuo Ohgaki
------------------------------------------------------------------------
[2001-12-05 21:48:49] chriskl@familyhealth.com.au
Yes, but my point is that imagine this situation:
40 different usernames for the database
32 maximum connections to the database
It doesn't take much to figure out what's going to happen. As soon as the first 32
usernames to be used have created persistent connections, the further 8 usernames can never pconnect
-> and remember, that doesn't take into account the fact that there are multiple PHP
processes running.
So, what I am suggesting is that once all 32 connections are being used and PHP then attempts to use
a 33rd username, instead of refusing to open the connection you should destroy the least recently
used persistent connection. This could be inefficient, but at least it won't lock PHP out of
Postgres.
Chris
------------------------------------------------------------------------
[2001-12-05 18:59:06] yohgaki@php.net
This is a design.
Connection parameters must be the same to reuse existing persistent connection. This design is
useful when you have multiple transactions.
------------------------------------------------------------------------
[2001-09-26 21:44:30] chriskl@familyhealth.com.au
We never had a problem with persistent connections until we started using about 40 different db
usernames/passwords for different scripts on our site, to give the scripts fine grained permissions.
Now, the problem is that we rapidly get 40 postmasters appearing, that are not reused. The solution
was to switch back to non-persistent connections and everything is hunky dory.
I'm fairly certain this problem started appearing in a recent PHP release as one day it
wasn't doing it and one day it was, and PHP was upgraded on our servers arount that time.
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=13463&edit=1