遇到需要在特定時間點執行程式碼時使用:
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
沒有留言:
張貼留言