ID:               49511
 Updated by:       j...@php.net
 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

Reply via email to