无聊想给博客搞一个自动发布文章功能,自动发布方式有很多种,一般采用计划任务的比较多,一次看到MySQL的事件调度,于是想就在mysql数据库中进行定时任务自动修改要发布的文章就可以了 。仅供研究测试,实际需要根据情况考虑用于生产环境中 。
什么是mysql的事件调度器,来说说 。
MySQL事件调度器修改配置Mysql配置文件,在配置文件末尾添加event_scheduler = 1,然重启mysql
MySQL从5.1开始支持Event功能,有点类似于MsSQL的Job,可以定时自动执行数据汇总 。
CREATE EVENT [IF NOT EXISTS] event_nameON 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用户名(不区分大小写);
【linux服务器上创建mysql5.7定时任务,实现自动发布文章】schedule:限定执行时间;
ON COMPLETION [NOT] PRESERVE:表示是否需要循环复用这个Event;
sql_statement:要执行的SQL语句(也可以使用存储过程代替传统的SQL语句);
comment:对该时间调度器的一个注释,最大长度64个字符;
实现思路
- 在linux上开启mysql5.7定时任务设置
- 创建发布文章存储过程脚本
- 创建定时任务
CREATE DEFINER=`root`@`localhost` PROCEDURE `blog`.`p_auto_publish`()BEGINupdate 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_publishON SCHEDULE EVERY 5 MINUTEON COMPLETION PRESERVEDO CALL p_auto_publish();
我这里定义的是每5分钟执行一次发布文章的存储过程 。创建事件任务具体的语法具体参照上面的说明 。好了,就这么多啦,大家可以自行研究,主要是一种尝试 。 觉得 迷神笔记 不错,记得来一波关注哦 。推荐阅读
- 如何禁止外网访问公司内网服务器?ACL配置立马解决
- 个人开淘宝网店的流程 在淘宝上开设个人网店的流程一共分为4个步骤
- 晚上吃牛肉的危害
- 网店怎样才能有销量 怎样把网店的销量做上去
- 顶谷大方茶好喝吗,大方茶中的上品顶谷大方茶
- 上海|上海新增本土“3590+19923”:31省份新增本土“3867+20813”
- 哈士奇性格上的优劣势
- 晚上涂唇膏睡觉的危害有哪些?
- 如何在淘宝网上开网店免费 怎么在淘宝上免费开店?
- 新手司机到底该如何给自己的爱车上保险?