Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
服务器端的Meteor.setInterval,性能如何?_Meteor - Fatal编程技术网

服务器端的Meteor.setInterval,性能如何?

服务器端的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

我在寻找一种方法来清理一些24小时后可能不需要的数据库条目,或者类似的东西,我在研究meteor代码:

我发现这部分:

// 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运行一个函数来清理数据库。你最后用了它吗?如果是这样的话,这对这类工作有好处吗?