单独批次性任务采用MySQL定时器解决需求

有时候咱们在开发的时候会遇到一些需求是在某个固定的时间段实现某些特殊功能,只作一次或者有规律的每分钟一次每小时一次,那么这个时候咱们能够启用MySQL的定时器来帮忙解决该问题。ajax

好比,有一个场景是要求今天中午12点,用户的全部记录被清空,咱们固然能够使用用户来触发这个机制,可是用户不必定是准点访问,若是以时间对比 好比 获取当前时间和12点比对,若是大于则看事件是否触发过了,若是触发过再也不触发,若是没有则触发。可是这样依然是延迟的处理触发机制,并且是依靠用户来触发,若是用户不来访问,该机制将永远得不到触发。数据库

与此同时,有一个定时访问来模拟用户就诞生了,好比用ajax每分钟轮训访问一次来帮助触发,这样的话也能够,不过比较消耗资源。还有一种是采用Linux crontab定时脚本帮助触发,能够只触发一次。困难处是要一些比较高的权限来处理服务器。服务器

其实,简单的逻辑触发能够由数据库来完成,数据库有定时器事件。好比我想每分钟更新 test_user表中id=1的用户的num为1事件


CREATE DEFINER=`root`@`localhost` EVENT `trigger` ON SCHEDULE EVERY 1 MINUTE STARTS '2016-12-01 12:00:00' ON COMPLETION NOT PRESERVE ENABLE DO update test_user set num=1 where id=1crontab

该定时器从2016-12-01 12:00:00后每分钟去执行一次 你也能够定义为一次事件,防止执行屡次资源

相关文章
相关标签/搜索