5

プロセスの終了に関する作業が必要です。

ただし、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.');
});

これは機能していません。

4

2 に答える 2

4

次の 2 つの簡単な操作を行うだけで、これを機能させることができます。

  1. exitイベントを使用する代わりに、イベントを使用します (使用するSIGINT代わりにprocess.on('exit',function(){/*stuff here*/});process.on('SIGINT',function(){/*stuff here*/});
  2. forever スクリプトを開始するときは、単に実行する代わりに、次のようforever start your-script.jsに入力します。forever start your-script.js --killSignal=SIGINT

これは私には機能しますが、私のスクリプトはmysqlをあまり使用せず、エクスプレスも使用しないため、機能しない可能性があります

于 2014-06-07T20:49:56.750 に答える
2

これは、初期化express()、たとえば (具体的にはサーバーの起動)、MySQL 接続の作成、または「バックグラウンドで動作する」その他の操作を行うと、ノードは終了せず、呼び出されないためです.on('exit')

保留中のタスクがあるため、終了しません。を呼び出す場合と同じですsetInterval()

MySQL 接続を切断するか、高速サーバーを停止すると、サーバーは終了し、ハンドラーを呼び出します。

于 2013-09-21T06:45:00.280 に答える