linux定时任务mysql_linux服务器上创建mysql5.7定时任务,实现自动发布文章

无聊想给博客搞一个自动发布文章功能,自动发布方式有很多种,一般采用计划任务的比较多,一次看到MySQL的事件调度,于是想就在mysql数据库中进行定时任务自动修改要发布的文章就可以了。仅供研究测试,实际需要根据情况考虑用于生产环境中。

什么是mysql的事件调度器,来说说。

MySQL事件调度器

修改配置Mysql配置文件,在配置文件末尾添加event_scheduler = 1,然重启mysql

MySQL从5.1开始支持Event功能,有点类似于MsSQL的Job,可以定时自动执行数据汇总。

CREATE EVENT [IF NOT EXISTS] event_name

ON SCHEDULE schedule

[ON COMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT 'comment']

DO sql_statement;

schedule:

AT timestamp [+ INTERVAL interval]

| EVERY interval [STARTS timestamp] [ENDS timestamp]

interval:

quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |

DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

其中,event_name:定时器名,最大长度64个字符,若未指定,则默认为当前的MySQL用户名(不区分大小写);

schedule:限定执行时间;

ON COMPLETION [NOT] PRESERVE:表示是否需要循环复用这个Event;

sql_statement:要执行的SQL语句(也可以使用存储过程代替传统的SQL语句);

comment:对该时间调度器的一个注释,最大长度64个字符;

实现思路

在linux上开启mysql5.7定时任务设置

创建发布文章存储过程脚本

创建定时任务

编写Mysql存储脚本

CREATE DEFINER=`root`@`localhost` PROCEDURE `blog`.`p_auto_publish`()

BEGIN

update article a set a.state=1 where a.`timestamp` < current_timestamp and a.state=0;

END

博客文章,有state字段,如果为0是草稿状态。存储过程的意思,就是判断当时草稿文章的发布时间小于当前时间,就更改state字段状态为1,即发布状态。

创建mysql定时事件任务

CREATE EVENT e_auto_publish

ON SCHEDULE EVERY 5 MINUTE

ON COMPLETION PRESERVE

DO

CALL p_auto_publish();

我这里定义的是每5分钟执行一次发布文章的存储过程。创建事件任务具体的语法具体参照上面的说明。好了,就这么多啦,大家可以自行研究,主要是一种尝试。 觉得 迷神笔记 不错,记得来一波关注哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值