pomelo添加定时任务

来源:互联网 发布:解压时数据错误 编辑:程序博客网 时间:2024/06/05 18:56
需求:在arena服务器下增加一个rank定时任务,每一分钟对对玩家进行一次排行。


首先在game-server/app/servers/arena目录下增加cron目录,
在game-server/app/servers/arena/cron目录下编写具体的执行的任务的代码rankCron.js,例如:
var utils = require('../../../util/utils');module.exports = function(app) {  return new Cron(app);};var Cron = function(app) {  this.app = app;};Cron.prototype.rank = function() {    utils.show('arena rank');};

然后在game-server/config/目录下增加定时任务配置文件crons.json,具体配置文件如下所示:
{    "development":{         "arena": [          {"id": 1, "time": "0 0/1 * * * *", "action": "rankCron.rank"}          ]    },    "production":{          "arena": [          {"id": 1, "time": "0 0/1 * * * *", "action": "rankCron.rank"}          ]    }}


结果如图:



在配置文件crons.json中,id是定时任务在具体服务器的唯一标识,且不能在同一服务器中重复;
time是定时任务执行的具体时间,时间的定义跟linux的定时任务类似,一共包括7个字段,每个字段的具体定义如下:
*     *     *     *   *    *        command to be executed-     -     -     -   -    -|     |     |     |   |    ||     |     |     |   |    +----- day of week (0 - 6) (Sunday=0)|     |     |     |   +------- month (0 - 11)|     |     |     +--------- day of month (1 - 31)|     |     +----------- hour (0 - 23)|     +------------- min (0 - 59)+------------- second (0 - 59)

例如:"0 30 10 * * *",这就代表每天10:30执行相应任务;"0 0/1 * * * *"表示每一分钟执行相应任务。
serverId是一个可选字段,如果有写该字段则该任务只在该服务器下执行,如果没有该字段则该定时任务在所有同类服务器中执行;
action是具体执行任务方法,chatCron.sendMoney则代表执行game-server/app/servers/chat/cron/chatCron.js中的sendMoney方法。


附:linux定时任务
用crontab -e 添加要执行的命令
下格式:
* * * * * /需执行命令的路径
前5个字段分别表示:
  分钟:0-59
  小时:1-23
  日期:1-31
  月份:1-12
  星期:0-6(0表示周日)

还可以用一些特殊符号:
  *:表示任何时刻
  ,:表示分割
 -:表示一个段,如第二端里: 1-5,就表示1到5点
  /n: 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

  pomelo里面用*/1报错,改成0/1就可以了
0 0
原创粉丝点击