私は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()は、クエリを実行しているのでカウントしません。あなたは長時間実行しているクエリを手動で削除する必要があります。これをスクリプト化することができます。 –
私はあなたが間違ってwait_timeoutを使用しようとしていると思います。私が正しく覚えていれば、wait_timeoutとinteractive_timeoutはクエリの持続時間ではありません。それらは、低速なクエリやSLEEPクエリを含む非アクティブな接続のためのものです。接続はまだ有効であり、アクティブです... –