我試圖測試wait_timeout
似乎被忽略的MySQL設置。MySQL「wait_timeout」沒有被長期質疑?
PHP腳本:
<?php
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$sql = mysqli_connect('localhost','root','root','mysql');
$query = "SHOW VARIABLES WHERE Variable_name='wait_timeout';";
$result = $sql->query($query) or die($query.'<br />'.$sql->error);
$row = $result->fetch_object();
echo "wait_timeout = " . $row->Value . "<br/>\n";
$time_start = microtime_float();
$query = "SELECT SLEEP(2) FROM mysql.user;";
$sql->query($query) or die($query.'<br />'.$sql->error);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Query completed in $time seconds<br/>\n";
echo "You got the page";
腳本輸出:
wait_timeout = 2
Query completed in 8.0005459785461 seconds
You got the page
我的配置
mariadb-server-5.3.5
php5.3.6
爲了強制MySQL在一段時間之後超時查詢,我需要做些什麼?
「wait_timeout」和「interactive_timeout」都是連接斷開之前的非活動時間。所以,連接在被刪除之前必須是空閒的(不運行查詢)。由於您正在運行查詢,MySQL SLEEP()不會計數。您必須手動殺死長時間運行的查詢。你可以編寫腳本。 – 2012-04-05 11:16:37
我想你試圖錯誤地使用wait_timeout。如果我沒有記錯,wait_timeout和interactive_timeout不適用於查詢持續時間。它們適用於非活動連接而不是查詢緩慢或包含查詢的SLEEP,連接仍然正常並且處於活動狀態...... – 2012-04-05 11:17:24