5

ノードjsでmysql接続を閉じたり終了したりしないと、機能に影響がありますか。

私はこのようにやっています

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

connection.query('SELECT 1', function(err, rows) {
  // connected! (unless `err` is set)
});

私のコードのどこでもmysql接続を終了していません。私の質問は、mysql 接続を閉じる必要があるかどうかです。mysql 接続を閉じないと、将来、他の問題に直面することになります。

nodejsが初めての私を助けてください

EDIT1 接続できない、開く接続が多すぎるなどの問題に直面することはありません。リソース関連の問題を意味しますか? 右。

EDIT2

手動または end 関数を使用して終了しない場合、どの時点で mysql 接続が閉じられますか?

4

4 に答える 4

7

接続を閉じる必要があります。

それを行うポイントは、プログラムがその接続で何をするかによって異なります。

プログラムが長く存続し、単一の接続しか必要とせず、その接続を継続的に使用する場合は、その接続を開いたままにしておくことができますが、必要に応じて接続を再度開く準備ができている必要があります。たとえば、サーバーが再起動した場合などです。

プログラムが 1 つの接続を開き、何らかの処理を行った後、その接続をしばらく使用しない場合は、使用していない間は接続を閉じる必要があります。

プログラムの寿命が短い場合、つまり、接続を確立し、何かを実行してから終了する場合、プログラムが終了すると自動的に閉じられるため、接続を閉じずに逃げることができます。

于 2012-05-31T09:09:09.723 に答える
2

実際には、MySQL の次のような問題に遭遇します。

「[ホスト] は多くの接続エラーが原因でブロックされています。' mysqladmin flush-hosts でブロックを解除してください」

MySQL は、失敗した切断を「接続エラー」としてカウントし始めるためです。その後、MySQL サーバーで FLUSH HOSTS を実行するまで、データベースは使用できません。私はこれを事実として知っています。それは私たちの NodeJS プロジェクトで起こりました。

connection.end()またはを使用して、出力またはrenderステートメントの前にdb接続を明示的に閉じるコードを記述しますconnection.destroy()

于 2012-12-24T15:59:18.563 に答える
0

いいえ、閉じる必要はありません。

于 2012-05-31T07:42:25.650 に答える
0

「サーバーに接続を閉じていることを伝えたときに、mysql側に特定のクリーンアップはありますか」という質問がある場合、答えは「いいえ、クライアントプロセスを終了するか、ソケットを閉じるだけであれば、connection.end(を呼び出すのと同じです。 )"

于 2012-12-25T07:54:53.937 に答える