MySQL «wait_timeout» не соблюдается для длительного запроса?

Я пытаюсь проверить параметр 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 таймировать запросы через определенное количество времени?

И wait_timeout и interactive_timeout – это время бездействия до того, как соединение будет удалено. Таким образом, соединение должно быть бездействующим (не запускать запрос) до его удаления. MySQL SLEEP() не учитывается, так как вы выполняете запрос.

Вам придется вручную убивать длинные запросы (нет настройки, чтобы MySQL делал это для вас). Вы можете это сделать. Используйте SHOW PROCESSLIST (или внешние инструменты, такие как Innotop ) и KILL .