【问题标题】:Event Scheduler should execute every month事件调度程序应该每月执行一次
【发布时间】:2011-04-19 05:47:46
【问题描述】:

我的机器上安装了 Win XP 操作系统和 XAMPP。

我需要在每个月的第一天凌晨 12:00:00 执行我的事件/调度程序。 表示每个月的 1 日。 (例如 1 月 1 日、2 月 1 日、3 月 1 日……)。

并且 我还需要在同一个事件中调用存储过程。 我只想使用 Event/Job 来实现这一切,而不是从前端。

请花几分钟时间询问我的问题。

【问题讨论】:

    标签: mysql scheduled-tasks


    【解决方案1】:

    MySQL 事件语法非常简单 -

    DELIMITER $$
    CREATE EVENT event1
    ON SCHEDULE EVERY '1' MONTH
    STARTS '2011-05-01 00:00:00'
    DO 
    BEGIN
     -- your code
    END$$
    
    DELIMITER ;
    

    事件将在 '2011-05-01' '00:00:00' 开始工作(日期时间必须是未来)。

    更多信息 - Using the Event Scheduler

    别忘了开启全局事件调度线程-

    SET GLOBAL event_scheduler = 1;
    

    【讨论】:

    • 谢谢@Devart,您能否告诉我如何设置启用 GLOBAL event_scheduler;
    • 只需运行'SET GLOBAL event_scheduler = 1;'。您可以使用此命令检查其状态 - 'SHOW PROCESSLIST;'。
    • 请问如何找到机器中正在运行的作业。我需要禁用它。工作是继续将数据插入表中。
    • 参见 ALTER EVENT 语法,例如- 'ALTER EVENT event1 DISABLE;'.
    • 尝试设置全名 - 'ALTER EVENT db_name.event_name DISABLE;'。此外,您可以删除它 - 'DROP EVENT db_name.event_name;'。
    【解决方案2】:

    假设您的 mysql 数据库位于 Web 服务器上,您可以设置一个在每个月的第一天运行的 cron 作业。您的服务器可能提供了一些 Web 界面来执行此操作。

    如果您无法从服务器本身启动 cron 作业,可以使用免费的 Web 服务设置 cron 作业,在给定时间调用服务器上的脚本。

    cron 作业调用的脚本可以是运行查询的简单 php 脚本。

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    mysql_query(' /* insert query here */ ');
    mysql_close($link);
    

    您可能想要包含一些错误检查,或者向自己发送一封关于成功/失败的电子邮件,或者在日志文件中留下一些消息。这样您就可以监控脚本是否完全运行和/或成功运行。

    【讨论】:

    • 我只想在 mysql 中运行它(意味着只在数据库内部),而不是在 php 中。
    • 哇,我什至不知道这是可能的。这些信息值得输入错误的答案。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 2017-09-15
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多