Edit report at https://bugs.php.net/bug.php?id=61411&edit=1
ID: 61411
Updated by: mike@php.net
Reported by: julien at palard dot fr
Summary: PDO Segfaults with PERSISTENT == TRUE &&
EMULATE_PREPARES == FALSE
Status: Re-Opened
Type: Bug
Package: PDO MySQL
Operating System: Linux 2.6.32-5-amd64
PHP Version: 5.4.0
Assigned To: uw
Block user comment: N
Private report: N
New Comment:
Are you experiencing a crash?
Previous Comments:
------------------------------------------------------------------------
[2015-01-13 11:31:04] fundom02 at yahoo dot com
Any news on this?
------------------------------------------------------------------------
[2014-12-26 18:52:16] Fundom02 at yahoo dot com
This is a bug.
$pdo creates a new connection. 2 seconds later MySQL closes that connection. 3 seconds later $pdo1
requests a completely new connection which is instantly reported as lost connection.
I believe that php-pdo is caching all connections and not checking if cached connections are closed.
If this weren't the case then $pdo1 would successfully create a new connection.
------------------------------------------------------------------------
[2014-12-26 18:45:26] don at smugmug dot com
Ahhh... That doesn't sound like a bug, actually. The connection is properly timing out on the
MySQL side because enough seconds have passed. Just reconnect and continue on?
------------------------------------------------------------------------
[2014-12-26 11:43:23] fundom02 at yahoo dot com
Perhaps this is a slightly different problem with the same symptoms.
The problem I see is using ATTR_PERSISTENT => true with ATTR_EMULATE_PREPARES => false with a
low wait_timeout on the server causes "MySQL server has gone away" issues.
To replicate this try the following.
Configure your MySQL with a wait_timeout of 2 seconds.
Then run the following.
function create_connection(){
$options = array(PDO::ATTR_PERSISTENT => TRUE,PDO::ATTR_EMULATE_PREPARES => FALSE);
return new PDO('mysql:host=127.0.0.1;dbname=trafficadbar;charset=utf8',
'root', 'wnn99BCc', $options);
}
$pdo = create_connection();
sleep(5);
$pdo1 = create_connection();
$statement = $pdo1->prepare("SELECT count(*) from users");
$statement->execute();
foreach ($statement as $line)
var_dump($line);
------------------------------------------------------------------------
[2014-12-23 23:00:51] don at smugmug dot com
I just tried the given test script against PHP-5.6.4 and it didn't segfault for me.
I'll try our main codebase on it and see if it's been resolved.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=61411
--
Edit this bug report at https://bugs.php.net/bug.php?id=61411&edit=1