功能实现:当用户超时未向服务端发送请求时更新用户状态为离线
1.创建表
2.创建存储过程
3.创建事件并调用存储过程
4.开启事件调度器
- 创建表
DROP TABLE IF EXISTS `t_uonline`;
CREATE TABLE `test` ( `id` int(11) NOT NULL, `FLAG` int(11) DEFAULT NULL, 'END_TIME' datetime, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 创建存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `update`() BEGIN update t_uonline SET flag =0 WHERE TIMESTAMPDIFF(MINUTE,END_TIME,NOW())>5 and flag=1 ;
END
- 创建事件,并调用存储过程
CREATE DEFINER=`root`@`localhost` EVENT `update_event` ON SCHEDULE EVERY 5 SECOND STARTS '2016-07-12 22:11:50' ON COMPLETION NOT PRESERVE ENABLE DO CALL `update`
- 开启事件调度器
查看定时器是否开启
show variables like '%sche%';
开启事件调度器
set GLOBAL event_scheduler = 1;
注意:
开启或者关闭事件调度器
ALTER EVENT update_event DISABLE ALTER EVENT update_event ENABLE