ID: 49511
Updated by: [email protected]
Reported By: casper at procurios dot nl
-Status: Open
+Status: Assigned
Bug Type: MySQL related
-Operating System: Linux
+Operating System: *
-PHP Version: 5.3.0
+PHP Version: 5.3, 6 (2009-09-09)
-Assigned To:
+Assigned To: mysql
New Comment:
See also bug #49436
Previous Comments:
------------------------------------------------------------------------
[2009-09-09 12:54:30] casper at procurios dot nl
I found a workaround:
Apparently mysqlnd does listen to 'default_socket_timeout'.
ini_set('default_socket_timeout', 5) sets a 5 second limit
I found that ini_set('default_socket_timeout', -1) disables the timeout
all
together, though that might be undocumented behaviour.
$storeTimeout = ini_set('default_socket_timeout', -1);
$link = mysqli_init();
mysqli_real_connect($link, 'localhost', 'root', '', 'mysql', null,
null,
MYSQLI_CLIENT_INTERACTIVE);
ini_set('default_socket_timeout', $storeTimeout);
mysqli_query($link, 'SELECT SLEEP(62)');
mysqli_close($link);
------------------------------------------------------------------------
[2009-09-09 12:24:02] casper at procurios dot nl
Description:
------------
It seems that mysqli using mysqlnd has a set timeout of 60 seconds for
a query. If you run a query that takes longer, the 'MySQL server has
gone away' error is cast.
Furthermore when I try to set MYSQLI_OPT_CONNECT_TIMEOUT, it won't
comply.
In the reproduce code below, I get the errors only after 60 seconds,
where I expected to see them at 5 seconds.
Reproduce code:
---------------
$link = mysqli_init();
mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5);
mysqli_real_connect($link, 'localhost', 'root', '');
mysqli_query($link, 'SELECT SLEEP(62)');
mysqli_close($link);
Actual result:
--------------
PHP Warning: mysqli_query(): MySQL server has gone away in
/home/casper/mysqltest.php on line 7
Warning: mysqli_query(): MySQL server has gone away in
/home/casper/mysqltest.php on line 7
PHP Warning: mysqli_query(): Error reading result set's header in
/home/casper/mysqltest.php on line 7
Warning: mysqli_query(): Error reading result set's header in
/home/casper/mysqltest.php on line 7
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=49511&edit=1