服务器端的Meteor.setInterval,性能如何?
我在寻找一种方法来清理一些24小时后可能不需要的数据库条目,或者类似的东西,我在研究meteor代码: 我发现这部分:服务器端的Meteor.setInterval,性能如何?,meteor,Meteor,我在寻找一种方法来清理一些24小时后可能不需要的数据库条目,或者类似的东西,我在研究meteor代码: 我发现这部分: // Periodically clear old entries that were never retrieved var _cleanStaleResults = function() { // Remove credentials older than 1 minute var timeCutoff = new Date(); timeCutoff.setM
// 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\u cleanupHandle
是否意味着它将每60秒执行一次?如果它看起来很奇怪,每60秒运行一次无休止的函数?这可能是一个一般的javascript问题,但我真的试图理解这种事情的性能,以及我是否可以安全地重复使用这种技术?我的主要目标是在服务器上存储临时数据,并在不需要时将其删除。我建议使用任务队列库,如
对于这种方法,您只需指定任务并启动它。您还可以随时结束任务。请注意,这都是服务器端的
添加任务
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()
还有很多选择,因此我建议查看文档。我实际上很熟悉synced cron,它是非常棒的软件包,谢谢。我仍然在试图理解setInterval的基本级别,如果它真的是这样使用的,如果可能的话。如果这么简单,我想尽量避免使用任何外部包。代码是针对包的。您对setInterval有什么想法吗?我建议查看方法的实现:。它绑定在光纤中,因此可以安全地在meteor中使用——至于性能,它可能是您将获得的最佳性能(比使用本机javascript超时要好得多),除非您使用later.js实现更复杂的系统(如synced cron)。请记住,如果你想让它在Meteor中平稳运行,所有这些都必须绑定在光纤中。我知道我在这里晚了一年多,但我也在问自己同样的问题。我计划使用setInterval运行一个函数来清理数据库。你最后用了它吗?如果是这样的话,这对这类工作有好处吗?