0
連接
我怎樣才能關閉花費太長時間使用MySQL和PHPMySQL的存儲過程,殺死10秒以上
我怎樣才能關閉花費太長時間使用MySQL和PHPMySQL的存儲過程,殺死10秒以上
解決的辦法是寫一個存儲過程,殺死上面的一段時間內所有的連接來執行(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 ;
的過程是非常簡單的: 獲取所有的連接ID隨時間大於10,遍歷結果並殺死他們
而且你可以讓一個cron任務調用ClearDB()程序或喲ü可以調用它每次你打開這樣的一個新的連接時間:
$pDB = new mysqli('localhost', 'user', 'pass', 'database');
if ($pDB->connect_error)
{
// Handle the error
}
$pDB->query('CALL ClearDB()');
希望這將幫助別人:)