Don't expect a certain server reply, it is undefined what happens.

This commit is contained in:
Ulf Wendel 2011-01-28 13:41:02 +00:00
parent aa5055ba0f
commit 267bf9b31b

View File

@ -78,18 +78,23 @@ mysqli.reconnect=0
mysqli_connect_errno(), mysqli_connect_error());
$thread_id_timeout = mysqli_thread_id($link);
/*
Don't test for the mysqli_query() return value here.
It is undefined if the server replies to the query and how.
For example, it seems that on Linux when connecting to MySQL 5.1,
the server always manages to send a full a reply. Whereas MySQl 5.5
may not. The behaviour is undefined. Any return value is fine.
*/
if ($IS_MYSQLND) {
/*
/*
mysqlnd is a bit more verbose than libmysql. mysqlnd should print:
Warning: mysqli_query(): MySQL server has gone away in %s on line %d
Warning: mysqli_query(): Error reading result set's header in %d on line %d
*/
if (!@mysqli_query($link, sprintf('KILL %d', $thread_id_timeout)))
printf("[013] Cannot KILL timeout connection, [%d] %s\n", mysqli_errno($link2), mysqli_error($link2));
@mysqli_query($link, sprintf('KILL %d', $thread_id_timeout));
} else {
if (!mysqli_query($link, sprintf('KILL %d', $thread_id_timeout)))
printf("[013] Cannot KILL timeout connection, [%d] %s\n", mysqli_errno($link2), mysqli_error($link2));
mysqli_query($link, sprintf('KILL %d', $thread_id_timeout));
}
// Give the server a second to really kill the other thread...
sleep(1);