【问题标题】:MySQL Event Scheduler run daily in a specific time frameMySQL Event Scheduler 在特定时间范围内每天运行
【发布时间】:2017-11-18 21:23:42
【问题描述】:

我在 MySQL 中编写了一个查询,我想每天在我们的 wordpress 服务器上运行它。使用 Cronjobs 给了我很多整理错误,所以我使用更容易通过 phpMyAdmin 实现的 Event Scheduler 进行了更轻松的操作。

现在我只想在特定时间运行查询:每小时一次,在上午 8 点到下午 5 点之间。

这可以使用事件调度程序吗?我知道:

STARTS = ...
ENDS = ...

但据我所知,这只设置全局值(开始和结束一次)。有没有可能设置一个经常性的每日结束?还是我必须为此使用 cron?

【问题讨论】:

  • 您不包括您的 mysql 命令、您的脚本、您的 SH 或 bat 脚本。这个问题不完整,无法回答。
  • 这些都不需要回答我的问题。由于我使用 Event Scheduler,因此不使用 sh 或 bat 脚本。我想知道是否可以在事件调度程序中设置特定的重复时间。请告诉我您还需要什么信息。
  • 我看到了那个帖子。那里的问题与我的不同,因为它仅涉及设置每日重复时间。我需要对 Event Scheduler(每日时间范围)进行进一步更改,因此我提出了问题。

标签: mysql wordpress cron


【解决方案1】:

只是一点点建议,从 OR 更改为 AND。

IF curtime() >= "08:00" AND curtime() <= "17:00" THEN
      LEAVE proc_label;

【讨论】:

  • 它应该被编辑为另一个答案,但不是独立的答案
【解决方案2】:

问题

我看到的问题是你想做两件事:

  • 每小时运行一次 (interval)
  • 但不要在特定的每日时间范围之外继续执行此操作。

使用以下示例很容易处理第一部分: MySQL Event Scheduler on a specific time everyday

第二部分是造成复杂性的部分。

解决方案

您有两个我能想到的可用解决方案:

  1. 安排一个间隔为 1 小时的事件,并在您的 SQL 语句/函数/过程中添加一个检查,以检查该时间是否在您想要的特定时间间隔内。
  2. 为特定时间安排多个事件 (9-10),例如(上午 8 点 59 分、上午 9 点 59 分...上午 4 点 59 分)

我个人更喜欢解决方案一,因为更改脚本中的值比重新安排/管理 9-10 个事件要容易得多。

快速示例

delimiter |

CREATE EVENT hours
    ON SCHEDULE
      EVERY 1 HOUR
      STARTS (TIMESTAMP(CURRENT_DATE))
    DO
      proc_label:BEGIN

         IF curtime() >= "08:00" OR curtime() <= "17:00" THEN
          LEAVE proc_label;
        END IF;

        select 1+1;
      END |

delimiter ;

【讨论】:

  • 选项 1 似乎是解决我的问题的好方法,谢谢!如果其他人有其他想法,我会暂时打开它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
相关资源
最近更新 更多