2012-01-10 40 views
0

是否可以配置MySQL,使其具有某种类似于PHP最大执行时间的执行限制,以便如果Query所花费的时间超过 - 例如 - 30秒,它会自动死亡?是否可以保持MySQL查询运行错误并关闭您的网站?

我刚刚在phpMyAdmin上做了一个很差的查询作为一个测试,它吃掉了所有的CPU,并杀死了我的网站大约15分钟...必须重新启动MySQL才能恢复我的网站。

任何想法?

+0

的可能重复[是否有可能保持MySQL查询从出差错运行,打倒你的网站?](HTTP://计算器。 com/questions/8811684/is-it-it-it-it-keep-a-mysql-query-from-running-awry-and-bring-down-your-si) – 2012-01-10 23:15:00

回答

1

MySQL不具备PHP所具有的时间限制功能。有些选项可以在my.conf中混淆hit_counter变量或join_table大小,甚至不允许持久连接。但要真正获得你想要的功能,你将不得不编写你自己的轮询守护进程来检查MySQL,并确保没有任何事情发生。

StackOverflow上的用户x9sim9自愿提供以下PHP脚本来完成此操作 - 尽管您可以使用任何其他脚本语言对其进行编码。让你的crontab频繁执行(每分钟左右)。

$result = mysql_query("SHOW FULL PROCESSLIST"); 
while ($row=mysql_fetch_array($result)) 
{ 
    $process_id = $row["Id"]; 
    if ($row["Time"] > 200) 
    { 
    $sql="KILL {$process_id}"; 
    mysql_query($sql); 
    } 
} 

请在这里看到相关的答案的其余部分:Anyway to Limit MySQL Query Execution time?

+0

美丽的答案,谢谢! – ProgrammerGirl 2012-01-28 15:12:24

相关问题