Tag: setinterval

在node.js服务器中使用多个setInterval(或setTimeOut)

我可以在node.js中为每个连接的客户端使用setInterval(或setTimeout)吗? 节点如何pipe理这个? 会有性能问题吗? 我想不时地在每个客户端上运行一个函数,我不知道如何去做,而不使用setInterval。

用node.js编写任务… cron或setInterval?

也许这似乎是一个奇怪的问题,但我不知道如何编程一个任务… …而是,我不知道什么是最好的解决scheme。 我刚刚完成了一个Web应用程序,它需要每个星期一,每一个星期一,执行一个“特殊”的代码段,它不能从其他地方调用。 cron解决scheme看起来好多了,但是这段代码会被隔离,就像这段代码和其他应用程序是两个不同的程序一样。 和cron解决scheme的最坏的障碍(甚至强硬我suposse它可以解决),当我从cli 节点cron.js调用JavaScript文件它使它的工作,但它永远不会结束…这是正常的? 或者它取决于代码? 因为我不想执行一个实例,下一个星期,第一个实例仍在运行,运行第二个,每个周期都会遇到同样的问题。 “setInteval”解决scheme可以设置一天的时间,并testing是否是星期一(星期一做出动作),或者可能设置时间为一周(604800000毫秒)…此解决scheme没有这些问题,特别是最后一个,但是它消耗了大量的资源(我认为…不是?)。 什么是最好的解决scheme? 有什么不同? 如果cron是最好的…如何停止任务? (uuuuuhhhh也许是用cron -a shell编写的其他程序 – 一分钟后杀死节点任务… uuummm有点拙劣的工作)。 非常感谢你。

Mongoosestream&setInterval导致内存泄漏?

我正试图在我的节点应用程序中诊断内存泄漏问题。 我对V8中的GC非常困惑,我不知道如何防止节点内存泄漏。 我有下面的代码,在setInterval中使用mongoose查询stream 。 setInterval(function() { var stream = Book .find({}) .stream(); stream.on('data', function(book) { // … book.updated_at = new Date(); book.save(); // … }); stream.on('error', function(err) { }); stream.on('close', function() { }); }, 1000); 这个setInterval的事件处理程序是否会导致内存泄漏?

如何在改变系统时间时用setInterval / setTimeout解决nodejs稳定的bug

在当前稳定版本的node.js v0.10.33中, 有一个错误 ,在将系统时间设置为过去时,setTimeout / setInterval不再触发。 运行这段代码来看看我的意思: var i = 0; var handle = setInterval(function() { console.log(++i); }, 1000); 然后在运行时将系统的时间更改为过去,如果在Windows或Linux上不重要。 间隔/超时不会再触发。 在将时间引向未来时,节点performance得非常好,并保持间隔运行。 这个bug在节点v0.11.3中得到了修复,我不能使用它,因为它不稳定。 我试过像timer-shim和nanotimer这样的模块,但是它们在内部也使用了setInterval / setTimeout,因此也有同样的问题。 就目前来说,我怎样才能以最好的方式绕过这个节点错误,而没有时髦的猴子修补呢?

没有var的情况下清除setInterval

我正在使用node.js来读取一堆目录,因为这样的同步确实伤害了我来跟踪这一切。 我正在使用一个setInterval来跟踪和报告进度,但是在一个循环中,我不能给它一个variables名称没有某种疯狂的对象组织。 那么是否有可能只是在满足语句的时间间隔内清除间隔? setInterval(function(){ if(list.length==count){ clearInterval(self) } },50); 基本上“计数”是一个计数,我增加了我扫描目录和list.length是目录中的项目的实际数量。 因为循环将在扫描目录之前完成,所以我必须将这个保留在实际的循环之外。 我记得有一种方法来调用JavaScript中的被调用者,但即使有一点谷歌我似乎无法find如果可能的。 所以基本上我想要清除间隔,而不通过variables设置间隔。

Node.js:内存使用量不断增加

我们正在编写一个脚本,在我们的服务器上读取大量的JPG文件(无限的,因为我们有另一个进程,不断写入JPG文件到相同的目录),并以固定的时间间隔(MJPEGstream)发送到用户的浏览器下面代码中的variables“frameDelay”)。 这与IP摄像机的function类似。 我们发现这个脚本的内存使用量不断增加,并最终被系统(Ubuntu)杀死; 我们多次检查了这个看似简单的脚本。 因此,我发布了下面的代码。 任何意见/build议,非常感谢! app.get('/stream', function (req, res) { res.writeHead(200, { 'Content-Type':'multipart/x-mixed-replace;boundary="' + boundary + '"', 'Transfer-Encoding':'none', 'Connection':'keep-alive', 'Expires':'Fri, 01 Jan 1990 00:00:00 GMT', 'Cache-Control':'no-cache, no-store, max-age=0, must-revalidate', 'Pragma':'no-cache' }); res.write(CRLF + "–" + boundary + CRLF); setInterval(function () { if(fileList.length<=1){ fileList = fs.readdirSync(location).sort(); }else{ var fname = fileList.shift(); if(fs.existsSync(location+fname)){ var data = […]

Meteor的服务器端setInterval / clearInterval

我正在创build一个Meteor应用程序,其中包含一些简单的计时器。 按一个定时器上的开始或停止button,每个调用方法来设置或清除间隔定时器等等。 当我setInterval ,我将结果对象存储在当前的计时器文档中,以便稍后当我想要清除间隔计时器时很容易find。 这是我遇到的问题。 当运行Meteor.setInterval()服务器端时,它返回一个对象。 根据node.js文档,这是正常的。 如果我在创build之后logging结果对象,则返回: { _idleTimeout: 5000, _idlePrev: { _idleNext: [Circular], _idlePrev: { _idleTimeout: 5000, _idlePrev: [Object], _idleNext: [Circular], _idleStart: 1393271941639, _onTimeout: [Function], _repeat: false }, msecs: 5000, ontimeout: [Function: listOnTimeout] }, _idleNext: { _idleTimeout: 5000, _idlePrev: [Circular], _idleNext: { _idleTimeout: 5000, _idlePrev: [Circular], _idleNext: [Object], _idleStart: 1393271941639, _onTimeout: [Function], _repeat: […]

nodejs中的setInterval

我正在做一个http请求,应该在每一分钟后运行。 以下是我的代码 var express = require("express"); var app = express(); var recursive = function () { app.get('/', function (req, res) { console.log(req); //Some other function call in callabck res.send('hello world'); }); app.listen(8000); setTimeout(recursive, 100000); } recursive(); 根据上面的代码,我必须在每一分钟后得到回应。 但我越来越错误:听EADDRINUSE。 任何帮助,这将是非常有益的。

间隔发送消息到websockets

我试图build立一个“查看最近的search”function到我的网站。 本质上,我想每5秒钟在网站上显示一个新的最近的search。 做这个的最好方式是什么? 我正在考虑让每个页面通过socket.io连接到我的服务器,然后每隔5秒向所有套接字广播一个关于新search的消息。 在客户端,当从套接字服务器接收到消息时,我将使用一些客户端JavaScript来更新网页的最近search部分。 是这样做的最好方法吗? 如果是这样,我该如何执行? 我正在使用node.js / express。

ExpressJS:如何知道请求何时完成?

在NodeJS之上设置的ExpressJS中,我有一些这样的代码: app.get('/keys/readresults/:keyname', basic_auth, function(req,res){ res.writeHead(200, {'content-type': 'text/json'}); setInterval( go_to_database_and_get('stuff', function (database_replies) { res.write(database_replies) }) ,5000); }); 为了简单起见,代码就是这样写的(如果有人想要真正的代码,我很乐意将它发布到一些pastebin中)。 当我curl -u username:password http://localhost:4000/keys/readresults/key正好是我想要发生的事情时会发生什么:我得到一个200状态头,它检查数据库中的任何结果,我想要写然后等待5秒钟,然后在数据库中search新的结果,并再次写入响应,等等,每隔5秒钟。 问题是,当我退出curl,循环不断进行。 一旦请求 结束,我如何告诉express或nodejs它应该结束该循环 (我猜是 clearInterval) ?