php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #81155 Mysql close is NOT synchronous
Submitted: 2021-06-17 14:35 UTC Modified: 2023-01-14 16:45 UTC
Votes:1
Avg. Score:3.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: video dot ice dot power at seznam dot cz Assigned:
Status: Open Package: PDO MySQL
PHP Version: 8.0.7 OS: any
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: video dot ice dot power at seznam dot cz
New email:
PHP Version: OS:

 

 [2021-06-17 14:35 UTC] video dot ice dot power at seznam dot cz
Description:
------------
Mysql close is NOT synchronous - it does NOT wait until the connection is closed/released by the database server which causes more simultaneous connections than needed from a script than connect/disconnect from the same database often.

An example of such usecase is unit testing.

I have tested also PostgreSQL. This PDO driver handles close synchronously/ok (SQL to limit connections: ALTER ROLE user CONNECTION LIMIT 1).

MySQL driver needs to be fixed as even server limit of 2 is not enough, currently limit of like 5 is needed even if there is no more than 1 simultaneous client connection.

Test script:
---------------
# 1. limit connection limit to 1
php -r '(new PDO("mysql:host=mysql", "user", "pass"))->exec("ALTER USER '"'"'user'"'"'@'"'"'%'"'"' WITH MAX_USER_CONNECTIONS 1");'

# 2. connect/disconnect often
for ($i = 0; $i < 10000; $i++) {
    (new PDO("mysql:host=mysql", "user", "pass"))->exec("SELECT 1");
}

Expected result:
----------------
no error

Actual result:
--------------
connection limit is exhausted about every 1000th connection

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2023-01-14 16:45 UTC] dharman@php.net
This could also be a problem with MySQL server. FWIW I cannot reproduce it on my machine.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 17:01:32 2024 UTC