MySQL事件调度程序每天在特定时间范围内运行

时间:2017-06-16 07:36:01

标签: mysql wordpress cron

我在MySQL中写了一个查询,我希望每天在我们的wordpress服务器上运行。使用Cronjobs给了我很多整理错误,因此我使用事件调度程序更容易实现,更容易通过phpMyAdmin实现。

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

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

 
angular.module("app",[])
.controller("TodoCtrl",TodoCtrl )

 function TodoCtrl($scope) {

    $scope.value = "I";
}

但据我所知,这只会设置全局值(开始和结束一次)。是否有可能设定反复的每日结束?或者我必须使用cron吗?

2 个答案:

答案 0 :(得分:0)

问题

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

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

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

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

解决方案

我有两个可以想到的解决方案:

  1. 安排一个间隔为1小时的事件,并在您的SQL语句/功能/过程中添加一个检查,以检查该时间是否在您想要的特定时间间隔内。
  2. 为特定时间安排多个事件(9-10),例如(上午8:59,上午9:59 ......上午4:59)
  3. 我个人更喜欢解决方案,因为更改脚本中的值要比重新安排/管理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 :(得分:0)

只需稍作改动,即可从“或”更改为“与”。

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