2015-11-04 115 views
1

我已經配置了作業node-cron,是的,我喜歡這個節點模塊來安排節點中的作業。在幾個時區node-cron上運行單個cron作業

這裏我有要求發送推送通知給位於不同時區的用戶。我想在特定的時間發送通知給他們。

假設我在晚上9點發送通知,因此在所有列出的時區中,cron作業將在晚上9點觸發。

var CronJob = require('cron').CronJob; 
var job = new CronJob('00 30 11 * * 1-5', function() { 
    /* 
    * Runs every weekday (Monday through Friday) 
    * at 11:30:00 AM. It does not run on Saturday 
    * or Sunday. 
    */ 
    }, function() { 
    /* This function is executed when the job stops */ 
    }, 
    true, /* Start the job right now */ 
    timeZone /* Time zone of this job. */ 
); 

我知道所有這一切,我正在做同樣的一個時區,在那裏的文檔中提到。

timeZone - [可選] - 指定執行的時區。這 將修改相對於您的時區的實際時間。

但是我可以在時區屬性中指定多個時區嗎?

如果有人知道其他節點模塊可以實現這個,那麼讓我知道?

注意:我已經知道我可以在這裏爲每個時區配置多個配置,但如果有動態列表會怎麼樣。

+0

是無人接聽類似的問題:http://stackoverflow.com/questions/32580629/run-a -single-cron-for-multiple-time-zones-node-js – guptakvgaurav

+0

我經歷了同樣的問題,找不到任何現成的解決方案。所以,我以某種方式設法開發了一種解決方法,我在註冊用戶所在的時區中維護了一個獨特的列表(json文件中的數組),並且每當他們在這個列表中出現新的條目時,我都會發現一個新的工作。 我認爲另一種解決方案(但後來放棄)是爲所有可能的時區安排cron作業,並找出屬於該區域的用戶併發送推送通知。 – guptakvgaurav

+0

Ooops,是的,我沒有找到,謝謝。我也會繼續關注。 –

回答

0

我不知道如何將時區列表發送到CRON作業,但是您可以更改在cron作業內運行的方法中的邏輯。

你可以這樣做:

  • 運行作業每半小時
  • ,如果它是你希望它在
  • 選擇用戶在哪裏(將電流轉換GMT時間用戶的時區每天跑 - 如果db可以做到這一點)> 11:30 AM在他們的時區& &尚未發出通知
  • 發送通知給返回的用戶。

您可能已經走了這條路......只是我2C

HTH扔