退出时节点js进程不能永远使用

时间:2013-09-21 04:35:47

标签: node.js

我想要一些关于流程退出的工作。

process.on('exit')无法使用express或socket.io或mysql等。

process.on('exit', function() {
    console.log('Server exit.');
});

只有这段代码可以使用。

var mysql = require('mysql');
var conn = mysql.createConnection();

conn.connect();

process.on('exit', function() {
    console.log('Server exit.');
});

这不起作用。

2 个答案:

答案 0 :(得分:3)

你可以通过做两件简单的事情来实现它:

  1. 使用exit事件(而非SIGINT使用process.on('exit',function(){/*stuff here*/});
  2. ,而不是使用process.on('SIGINT',function(){/*stuff here*/});事件
  3. 启动永久脚本时,不要只执行forever start your-script.js,而是键入forever start your-script.js --killSignal=SIGINT
  4. 这对我有用,但我的脚本并没有使用太多的mysql并且没有使用任何快递,所以它可能不适合你

答案 1 :(得分:2)

那是因为一旦你初始化express(),说(具体是:启动服务器),或创建一个MySQL连接,或做“生活在后台”的任何其他事情,节点将不会退出,因此不会被调用你.on('exit')

它不会退出,因为它有待处理的任务。就像你要调用setInterval()一样。

如果断开MySQL连接或停止快速服务器,它将退出并调用您的处理程序。