是否有一种方法可以从PHP强制Mysql在特定时间内杀死一个查询?
有时我会看到执行很耗费资源的查询,运行几个小时(很显然这个时候HTTP连接超时或者用户已经离开了)。一旦足够多的这样的查询积累起来,它就会严重影响整体性能。
警告:现在应该使用类似{{link1:upstart
}}的预期行为。
您想要为此类事情创建{{link2:DAEMONS
}},但也可以使用cron。
只需编写一个脚本,定期查看超过xyz时间
的查询并将其终止。
// this instruction kills all processes executing for more than 10 seconds
SELECT CONCAT('KILL ',id,';')
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE state = "executing" AND `time` >= 10
然而,如果查询运行时间过长...它们必须被优化。
另一方面,您可能正在尝试管理共享服务器,可能会有一些流氓用户。在这种情况下,您应该在服务条款中指定脚本将被监视和禁用,并且对于这些具有攻击性的脚本,确实应该采取这样的措施。