我想要一些关于流程退出的工作。
但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.');
});
这不起作用。
答案 0 :(得分:3)
你可以通过做两件简单的事情来实现它:
exit
事件(而非SIGINT
使用process.on('exit',function(){/*stuff here*/});
process.on('SIGINT',function(){/*stuff here*/});
事件
forever start your-script.js
,而是键入forever start your-script.js --killSignal=SIGINT
这对我有用,但我的脚本并没有使用太多的mysql并且没有使用任何快递,所以它可能不适合你
答案 1 :(得分:2)
那是因为一旦你初始化express()
,说(具体是:启动服务器),或创建一个MySQL连接,或做“生活在后台”的任何其他事情,节点将不会退出,因此不会被调用你.on('exit')
。
它不会退出,因为它有待处理的任务。就像你要调用setInterval()
一样。
如果断开MySQL连接或停止快速服务器,它将退出并调用您的处理程序。