节点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.'); }); 

这是行不通的。

这是因为一旦你初始化express() ,说(特别是:启动服务器),或者创build一个MySQL连接,或者做任何其他的“居住在后台”,节点将不会退出,所以不会叫你.on('exit')

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

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

你可以通过做两件简单的事情来完成工作:

  1. 而不是使用exit事件,而是使用SIGINT事件(而不是process.on('exit',function(){/*stuff here*/});使用process.on('SIGINT',function(){/*stuff here*/});
  2. 当开始永远的脚本,而不是只是做forever start your-script.js脚本forever start your-script.js --killSignal=SIGINT ,键入forever start your-script.js --killSignal=SIGINT

这适用于我,但我的脚本不使用太多的MySQL,并没有使用任何expression,所以它可能不适合你