微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐