功能实现:当用户超时未向服务端发送请求时更新用户状态为离线
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