我一直在寻找一种清理24小时后可能不需要的数据库条目的方法,我正在调查流星代码:https://github.com/meteor/meteor/blob/832e6fe44f3635cae060415d6150c0105f2bf0f6/packages/oauth/pending_credentials.js
我找到了这个部分:
// Periodically clear old entries that were never retrieved
var _cleanStaleResults = function() {
// Remove credentials older than 1 minute
var timeCutoff = new Date();
timeCutoff.setMinutes(timeCutoff.getMinutes() - 1);
OAuth._pendingCredentials.remove({ createdAt: { $lt: timeCutoff } });
};
var _cleanupHandle = Meteor.setInterval(_cleanStaleResults, 60 * 1000);
我无法找到任何功能的执行。我想知道var _cleanupHandle
是否意味着它会每60秒执行一次?如果它看起来很奇怪,每60秒运行一次无穷无尽的功能?这可能是一般的javascript问题,但我真的想了解这种事情的表现,如果我能安全地重新使用这种技术?我的主要目标是在服务器上存储临时数据,并在不需要之后将其删除。
答案 0 :(得分:2)
我建议使用https://atmospherejs.com/percolate/synced-cron等任务队列库。
对于这种方法,您只需指定任务并启动它。您也可以随时结束任务。请注意,这都是服务器端。
添加任务
SyncedCron.add({
name: 'Crunch some important numbers for the marketing department',
schedule: function(parser) {
// parser is a later.parse object. NOTE THAT THIS IS WHERE YOU SPECIFY THE FREQUENCY
return parser.text('every 2 hours');
},
job: function() {
var numbersCrunched = CrushSomeNumbers();
return numbersCrunched;
}
});
开始任务
SyncedCron.start();
停止所有任务
SyncedCron.stop()
还有更多选项,所以我建议查看文档。