如何使用 MySQL 和 PHP 关闭 (KILL) 执行时间过长的连接
最佳答案
解决方案是编写一个存储过程,在一段时间内终止所有连接:
DELIMITER //
DROP PROCEDURE IF EXISTS ClearDB//
CREATE PROCEDURE ClearDB()
BEGIN
DECLARE nID, bCursor INT;
DECLARE cursorQuery CURSOR FOR
SELECT ID
FROM information_schema.processlist
WHERE `TIME` > 10;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET bCursor = 1;
OPEN cursorQuery;
SET bCursor = 0;
WHILE bCursor = 0 DO
FETCH cursorQuery INTO nID;
KILL nID;
END WHILE;
CLOSE cursorQuery;
END //
DELIMITER ;
过程非常简单: 获取所有TIME大于10的连接ID,循环结果并kill掉
您可以创建一个 cron 任务来调用 ClearDB() 过程,或者您可以在每次打开新连接时调用它:
$pDB = new mysqli('localhost', 'user', 'pass', 'database');
if ($pDB->connect_error)
{
// Handle the error
}
$pDB->query('CALL ClearDB()');
希望它能对某人有所帮助:)
关于php - MySQL 存储过程终止超过 10 秒的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13580829/