2015年5月3日 星期日

nodejs_定時排程

NODEJS的定時排程模組: node-schedule

遇到需要在特定時間點執行程式碼時使用:
  EX. 2014/11/07 17:00
或是沒有固定的時間間隔:
  EX. 每月1號(每月天數不一定)
固定時間間隔也可以(雖然也是固定時間間隔但比較重視時間的"點"):
  EX. 每個星期日下午5點

>> node-schedule 模組


每隔一段時間執行程式碼時使用:
  EX. 每隔5分鐘

>> setInterval()


setInterval()可以做的事情使用排程也可以做到,如果時間間隔較大或是需要精準的時間"點"那就會排程來做。



node-schedule 模組 (於 npm頁面)

Docs摘要:

  • 安裝方式 (Installation)
    • $npm install node-schedule
    • 並在.js檔內引入: var schedule = require('node-schedule');

  • 使用類Corn語法來排程工作 (Cron style Scheduling)
    • Cron
      • Cron Job 指的是定時去做的事情;例如每月1號凌晨都備份電腦;名稱由來是Linux裡的用來定時排程的工具名稱
    • 新增一個node-schedule
      • var job = schedule.scheduleJob('42 * * * *', function(){ //do job here });
      • 字串代表意思為每42分鐘;
      • 格式: [分鐘] [小時] [日期] [月份] [星期幾] [年(可不填)]

      • 使用Date來排程工作 (Date based Scheduling)
        • 建立Date物件
          • var date = new Date(2015, 5, 4, 22, 0, 0);
          • var job = schedule.scheduleJob(date, function(){ // job content here });
        • 刪除排程
          • job.cancel();
        • 在排程指定的時間使用現在的資料
          • var x = 'Tada!';
          • var job = schedule.scheduleJob(date, function(y){ console.log(y); }).bind(null, x);
          • x = 'Changing data';
          • 在排程事件發生時,會是印出 'Tada!'

      • 建立循環規則來排程 (Recurrence Rule Scheduling)
        • 建立規則
          • var rule = new schedule.RecurrenceRule();
          • // 設定 rule 物件屬性來指定時間點
          • rule.hour = 17; // 下午5點
          • rule.minute = 0; // 下午5點0分
          • // 也可以指定範圍
          • rule.dayOfWeek = [0, new schedule.Range(4, 6)]; // 每星期日.四~六的下午5點0分
          • var job = new schedule.scheduleJob(rule, function(){ // do jobs here });
        • 上述建立rule物件也可以直接用物件寫法取代
          • var job = new schedule.scheduleJob({hour: 17, minute: 0}, function(){ // do jobs here });


      *可以將建立的工作存在一個物件裡面,若是要刪除則直接刪除物件或指定為null即可取消排程工作。

      // end

      沒有留言:

      張貼留言