使用MySQLl事件定时执行岗位七天下线任务

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 使用MySQLl事件定时执行岗位七天下线任务

最近做了一个招聘的项目,在项目中有一个定时下线的需求。在做之前我一直在考虑到底使用window 服务,还是使用调度,最终我选择使用mysql定时事件,因为这样简单方便。

思路:首先创建一个存储过程,通过游标遍历更新对应的岗位状态,让后在创建定时事件,废话不多说直接上代码

首先创建存储过程:

CREATE DEFINER = CURRENT_USER PROCEDURE `TimedDownLine`()
BEGIN
-- 声明变量(用于插入数据)
DECLARE PostID INT;#岗位ID
DECLARE DifferDay INT;#相差天数
DECLARE done INT DEFAULT 0;#判断是否存在信息的依据0表示存在数据
DECLARE Integral_cursor cursor for SELECT id,TIMESTAMPDIFF(DAY, ReleaseEnd, now()) AS intervalday FROM postrelease WHERE PostType=1;#查询所有在线的岗位信息(1表示在线岗位,2表示下线岗位)
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;#没有数据返回更改状态为1
-- 打开游标
OPEN Integral_cursor;
#开始循环
WHILE done=0 DO
#REPEAT
   #游标赋值(游标只会向下执行)
     FETCH Integral_cursor INTO PostID,DifferDay;
     IF(done=0&&DifferDay>7)
     THEN UPDATE postrelease SET PostType=2 where ID=PostID;
   end IF;
#循环结束
#UNTIL done=1 END REPEAT;
END WHILE;
SET done=1;#更改状态,表示循环结束
-- 关闭游标
END

创建数据库事件:

#查看数据库事件是否开启
SHOW VARIABLES LIKE 'event_scheduler'
show variables like '%event%';
#设置当前事件开启
SET GLOBAL event_scheduler = 1; 
#查看定时任务
select * from  mysql.event;
SELECT * FROM information_schema.events; 
#每天凌晨开始执行
select DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 13 HOUR) 
#关闭定时任务
DROP event temp_event;
#每天凌晨开始执行(创建定时事件)
CREATE EVENT IF NOT EXISTS TimeDownlines_event   
    ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 0 HOUR)   
    ON COMPLETION PRESERVE ENABLE #到点开启定时任务 
    DO CALL TimedDownLine();

这样只写对于一些业务相对于没有复杂的定时任务完全可以应对,而且开发快捷,下次有时间会把window 服务的定时任务写上。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
弹性计算 安全 机器人
一键搞定定时自动化通知
您是否经常忘了需要每周要填报工作时长?您的团队是否需要每月定时盘点HC?您是否每月末都在工作群提醒大家更新OKR? 这些简单的定时任务是不是经常会忘记或者占用您的精力?如果你也有这些烦恼,是时候来试试这个应用与数据集成平台——阿里云计算巢AppFlow了,它能够像一个神经中枢,高效地串联起所有关键数据流,并且能够巧妙地运用现代化的通讯工具如钉钉群机器人,实现定时消息通知,让每一个重要信息都能准时送达,不再因为简单重复的定时工作而占用您的时间和精力~
153 0
|
4月前
|
运维 安全 搜索推荐
记一次crontab定时任务被清空的故障原因定位及复盘过程
记一次crontab定时任务被清空的故障原因定位及复盘过程
88 0
|
8月前
宜搭定时触发
宜搭定时触发的粒度为表单字段的日期格式,也就是说可以精确到某一天,现在有一生产环境需要每周一进行设备巡检任务下发,设备很多,这一天的任务数有可能是几百条,在实际使用中发现:当设置了在周一早上6:00触发时,几百条任务同时触发会出现高并发导致部分触发失败。目前没有成熟的解决方案,只能将几百条任务分成多个表单多条定时触发,有的设置6:00触发,有的设置7:00触发,这样每个表单100条数据,仍然有6条触发失败。
|
12月前
|
数据采集 监控 Linux
一日一技:不用轮询,基于事件监控文件变动
一日一技:不用轮询,基于事件监控文件变动
84 0
|
监控 测试技术
测试主管如何做好进度监控和进度汇报?
大家好,我是阿萨。测试执行过程中的进度汇报以及进度监控是项目成败的关键因素。项目执行过程中的测试自动化也会提升测试执行效率。今天针对测试执行过程这2个问题进行解答
141 0
|
JavaScript 前端开发 开发工具
大事件项目第二天(二)
大事件项目第二天(二)
117 0
大事件项目第二天(二)
|
缓存 JavaScript 前端开发
大事件项目第二天(一)
大事件项目第二天
104 0
大事件项目第二天(一)
|
网络协议 Windows
【错误集】不定时更新
文章目录 前言 一、内容 二、服务(配置文件) 2.1 DNS服务无效(文件无权
126 0
【错误集】不定时更新
|
消息中间件 NoSQL 算法
面试官:怎么不用定时任务实现关闭订单?
面试官:怎么不用定时任务实现关闭订单?
面试官:怎么不用定时任务实现关闭订单?
|
资源调度 运维 Java
定时任务报警通知解决方案详解
随着微服务和云计算的兴起,定时任务技术也是发展迅速,不仅能做单机的定时任务,而且在分布式系统下应用也很广泛,成为了业务做兜底、数据处理的第一选择。
2420 3
定时任务报警通知解决方案详解