4

wait_timeout無視されているように見える MySQL 設定をテストしようとしています。

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 を強制的にクエリをタイムアウトさせるにはどうすればよいですか?

4

1 に答える 1

4

wait_timeoutとは両方ともinteractive_timeout、接続が切断されるまでの非アクティブな時間です。したがって、接続がドロップされる前に、接続がアイドル状態 (クエリを実行していない) である必要があります。クエリを実行しているため、 MySQLSLEEP()はカウントされません。

長時間実行されているクエリを手動で強制終了する必要があります (MySQL に実行させる設定はありません)。これをスクリプト化できます。(またはInnotopSHOW PROCESSLISTなどの外部ツール) と を使用します。KILL

于 2012-04-05T11:24:10.873 に答える