2016-11-15 32 views
0

我正在使用Expressjs框架在Nodejs中创建应用程序。如何停止基于节点服务器的时间间隔脚本?

我尝试在每分钟后使用setInterval()JavaScript方法执行一些脚本。

当我通过node app.js启动服务器时,脚本成功运行。但是,当我通过Ctrl+c停止服务器并尝试重新启动它时,它说3000(我的服务器端口)已被使用。

我无法重新启动服务器,也无法访问我的网站。我正在使用Ubuntu。

我已经使用了下面所有的命令,但并没有停止。

  1. 定影-k 3000/TCP

  2. 杀processNumber

  3. killall节点

代码:

router.get("/trackplayers", function(req, res, next) { 
    // Run in every minute 
    setInterval(function(){ 
     console.log('Players tracking is under process..'); 
    }, 60000); 
}); 

在此先感谢!

+1

如果粘贴代码将有助于..但按我的understading而不是设定的时间间隔更好,我们去与回呼settimout ..这使用settimout您将能够执行一个功能执行一次回调中再次完成创建新的settimeout。 –

+0

按下'Ctrl + c'后,运行'ps aux'时进程仍然有效吗? –

+0

不,当我输入ps aux或ps aux | grep node – Tahir

回答

0

务必彻底退出该过程。以下代码将优雅地终止快速应用程序。

var express = require("express"); 
var app = express(); 
var server = app.listen(3000); 
// Respond to 'Ctrl+C' 
process.on("SIGINT", function() { 
    // stop accepting connections 
    server.close(function() { 
    // connections are closed 
    // exit the process 
    process.exit(0); 
    }); 
}); 
// Server is shutting down 
process.on("SIGTERM", function() { 
    // stop accepting connections 
    server.close(function() { 
    // connections are closed 
    // exit the process 
    process.exit(0); 
    }); 
}); 
+0

谢谢大家!它有助于 – Tahir