2017-04-16 48 views
0

我正在構建一項功能,允許用戶安排由服務器生成的報告。如何安排作業在不同時間爲不同用戶運行

即用戶A希望安排在每天 而用戶B想要安排相同的在每天上午10點到下午5點被生成並通過電子郵件發送給他的報告。

可能有許多用戶希望在任何時候選擇他們的作業。

我看到有一些所謂的節點時間表: https://www.npmjs.com/package/node-schedule

在這裏你可以這樣做:

var schedule = require('node-schedule'); 

var j = schedule.scheduleJob('42 * * * *', function(){ 
    console.log('The answer to life, the universe, and everything!'); 
}); 

來當一分鐘每個小時42執行cron作業。

如果系統只有一個用戶,可能會有這樣的情況,但對於多個用戶,我無法對時間進行硬編碼來安排工作。任何建議?

回答

0
const schedule = require('node-schedule'); 

let schedules = {}; 
schedules[`${userId1}`] = schedule.scheduleJob('42 * * 1 *', function(){ 
    console.log('Generating report for user 1!'); 
}); 
schedules[`${userId2}`] = schedule.scheduleJob('42 3 * * *', function(){ 
    console.log('Generating report for user 2!'); 
}); 
schedules[`${userId3}`] = schedule.scheduleJob('42 2 * * *', function(){ 
    console.log('Generating report for user 3!'); 
}); 

userId1執行cron作業當一分鐘42(每小時)和月是一月

userId2當一分鐘42(每天)執行cron作業和時間是凌晨3點

userId3分鐘爲42(每天)和小時爲2時執行cron作業

+0

這並沒有完全回答我的問題。如果用戶2想要在與用戶1不同的時間安排工作,該怎麼辦?你的回答表明所有用戶都在同一時間安排工作。 – Sam

+0

編號''42 * * 1 *'',''42 3 * * *'',''42 2 * * *''不是同一時間。 –

+0

謝謝,你是對的。這個解決方案可以擴展嗎?如果有一百萬用戶,那將意味着1百萬個工作被安排在內存中? – Sam

相關問題