首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Mysql中设置定时任务

如何在Mysql中设置定时任务
EN

Stack Overflow用户
提问于 2022-01-05 00:05:01
回答 3查看 89关注 0票数 0

我有一个应用程序,我想单独运行计划的任务。因此,我需要每1小时刷新一次Mysql中的DateTime时间,然后根据时间判断TODO。我不知道该用哪一套,有推荐吗?如果我不依赖于代码来执行定时任务,这有可能吗?任何帮助都是非常感谢的!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-01-05 07:35:21

如果要使用代码在Asp.net核心中实现计划的任务,可以使用以下包:

Quartz

https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html#download-and-install

Hangfire

https://docs.hangfire.io/en/latest/getting-started/aspnet-core-applications.html

TimedJob

https://www.nuget.org/packages/TimedJob/

就个人而言,如果您只需要每小时更新一次数据库DateTime,我建议使用TimedJob,因为使用起来太方便了。

我在这里做了一个简单的演示,您可以参考它:

在启动类中的配置:

1.在ConfigureServices方法中配置应用程序服务。

代码语言:javascript
复制
services.AddTimedJob();

2.在配置方法中创建应用程序的请求处理管道。

代码语言:javascript
复制
app.UseTimedJob();

创建一个类来编写计时器代码

代码语言:javascript
复制
 public class Schedule : Job
    {
        [Invoke(Begin = "2022-01-05 9:00", Interval = 60*60, SkipWhileExecuting = true)]
        public void Run()
        {
            Console.WriteLine("--------------------");
            Console.WriteLine(DateTime.Now);
            TaskA();
        }

        private void TaskA()
        {
            //Execute your update sql statement
            Console.WriteLine("Task A:Successfully updated DateTime!");
        }
      
    }

为了方便演示效果,设置时间较短。如果需要1小时,将其设置为60 * 60 * 1000

此外,我没有在这里执行数据库操作,您可以在TaskA方法中执行您的sql语句。

结果:

实现MySQL定时任务的方法有两种:

1.使用MySQL事件计时任务来使用MySQL的事件调度,首先需要在服务器上启用event_scheduler,然后才能处理它。

2.使用Linux的定时任务crontab

本文有详细的示例,您可以阅读它,希望这些对您有所帮助:

https://www.mysqltutorial.org/mysql-triggers/working-mysql-scheduled-event/

票数 -1
EN

Stack Overflow用户

发布于 2022-01-05 00:15:47

只需创建一个事件:

代码语言:javascript
复制
CREATE EVENT update_todos
    ON SCHEDULE EVERY '1' DAY
    STARTS CURRENT_TIMESTAMP
    ON COMPLETION PRESERVE ENABLE
    DO 
BEGIN
   -- your query here;
END;

此外,确保事件调度程序是打开的。可以在配置文件中设置event_scheduler系统变量:

代码语言:javascript
复制
[mysql]
event_scheduler=ON

通过执行set全局,还可以在运行时动态设置event_scheduler系统变量:

代码语言:javascript
复制
SET GLOBAL event_scheduler=ON;
票数 0
EN

Stack Overflow用户

发布于 2022-01-05 00:32:24

由于您正在使用Mysql,您可以创建一个事件,它将根据您所决定的特定条件(每日、每小时和特定日期等)触发。

或者,如果您可以在您的服务器上安排一些脚本,在Linux的情况下,您可以使用克伦·乔布斯,对于windows,您可以检查任务调度器

享受编码吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70586404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档