2016-11-15 6 views
0

Expressjs 프레임 워크를 사용하여 Nodejs에서 응용 프로그램을 만들고 있습니다.노드 - 서버 기반 간격 스크립트를 중지하는 방법은 무엇입니까?

매분마다 setInterval() JavaScript 메소드를 사용하여 일부 스크립트를 실행하려고했습니다.

node app.js으로 서버를 시작하면 스크립트가 성공적으로 실행됩니다. 하지만 서버를 Ctrl+c으로 중지하고 다시 시작하려고 시도하면 3000 (내 서버 포트)이 이미 사용 중입니다.

서버를 다시 시작할 수없고 내 웹 사이트에 액세스 할 수도 없습니다. 나는 우분투를 사용하고있다.

다음 명령을 모두 사용했지만 멈추지 않습니다.

  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