Cron服务升级,支持offset,定时更精确

根据SAE Cron服务众多用户反馈,我们添加了offset功能,以此提供更精确的分布式定时服务。

目的:

  1. 加强Cron服务的精度
  2. 支持整点固定偏移时刻运行脚本的需求
  3. 增强Cron服务的并发处理能力


说明:

原SAE Cron语法分为

每隔时间型=》every 1 hour, every 2 mins

指定时间型=》every day of month 11:29, $2 day of month 19:03

两类。

offset特性主要是支持第一类(每隔时间型),其表现为:

every 1 hour, offset 6

表示每隔1个小时运行一次,整点偏移为6分钟,即9:06分运行、10:06分运行、11:06分运行、12:06、13:06…

当用户指定offset 0时,则表示无偏移,特用于整点执行或者整分执行等。而当用户不指定offset时,SAE Cron会自动进行一个随机偏移,比如用户如果写every 1 hour,则SAE Cron可能会在每小时的一个随机时刻执行此脚本,当然每次执行间隔将严格为1小时。

offset后面的int值,当every精度为小时时,int值代表分精度;当every精度为分时,int值代表秒精度。特别说明:SAE Cron服务本身支持分精度,所以即使用户用offset语法指定秒级偏移,SAE仍然会有10秒以内的误差。

综上:

  1. offset只对every int hour|min型间隔语法起作用
  2. 不写offset时,SAE会在一个随机时间偏移做初次执行,以后严格保证相同间隔时间
  3. offset支持分偏移和秒偏移,但误差在10秒以内
  4. 整点报时等服务,请显式指定offset 0 , 其他情况下 0 < offset值 < 60

示例:

cron:
- description: cron test
空格*2url: mycron/test.php
空格*2schedule: every 5 mins
空格*2login: kobe@123456

每隔5分钟运行mycron/test.php,基于中国北京时间,http访问权限为用户名kobe、密码123456

cron:
– description: cron test
空格*2url: mycron/test.php
空格*2schedule: every 5 mins, offset 49

每隔5分钟(偏移49秒,也就是第5分钟的49秒,第10分钟的49秒,第15分钟的49秒。。。)运行mycron/test.php,基于中国北京时间

cron:
– description: cron test
空格*2url: mycron/test.php
空格*2schedule: every 1 hour, offset 0

每整点运行mycron/test.php,基于中国北京时间

cron:
– description: cron test
空格*2url: mycron/test.php
空格*2schedule: every 1 hour, offset 15
空格*2login: kobe@123456

每小时一刻运行mycron/test.php,基于北京时间,http访问权限为用户名kobe、密码123456

cron:
– description: cron test
空格*2url: mycron/test.php
空格*2schedule: every 3 hour
空格*2login: kobe@123456

每隔3小时运行mycron/test.php,基于北京时间,http访问权限为用户名kobe、密码123456

Comment

  • Trackback are closed
  • Comments (4)
  1. 更强大了

  2. 又一个很爽的功能

    • enhl
    • 04/27. 2010 9:06下午

    确实很爽

  3. 请问如何停止Cron服务啊?

Comment are closed.