2012-05-31 2 views
5

Если мы не закрываем или не закрываем соединение mysql в узле js, это эффекты в функции или нет.Есть ли какие-либо проблемы, если мы не закрываем соединение mysql в модуле mysql js js

Я делаю как этот

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

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

Am не заканчивается соединение MySQL где-либо в моем коде. Мой вопрос: Необходимо закрыть соединение mysql. Если мы не закрываем соединение mysql, я буду сталкиваться с любыми другими проблемами в будущем.

Пожалуйста, помогите мне новичок в nodejs

EDIT1 Я не буду никаких проблем, как не может подключиться, слишком много соединений, чтобы открыть и т.д., означает любые вопросы, связанные с ресурсами? правильно.

EDIT2

В какой момент соединение MySQL будет близко, если мы не до конца вручную или с помощью функции конечного?

ответ

5

Вы должны закрыть соединение.

Точка, в которой вы делаете это, зависит от того, что ваша программа делает с этим соединением.

Если программа долговечна и требуется только одно соединение, но использует это соединение непрерывно, вы можете просто оставить это одно соединение открытым, но вы должны быть готовы повторно открыть соединение, если необходимо - например. если сервер перезапускается.

Если программа просто открывает одно соединение, выполняет некоторые действия, а затем не использует соединение в течение некоторого времени, вы должны закрыть соединение, пока вы его не используете.

Если программа недолговечна, то есть она делает соединение, делает некоторые вещи, а затем выходит, вы можете уйти, не закрывая соединение, потому что она автоматически закрывается, когда ваша программа завершается.

0

Нет, вам не нужно его закрывать.

+0

Спасибо @Erik.Я не буду сталкиваться с такими проблемами, как неспособность подключиться, слишком много соединений для открытия и т. Д. Проблем, связанных с ресурсами? правильно. –

0

На самом деле, вы столкнетесь с такими проблемами, как этот из MySQL:

«[хозяин] заблокирован из-за многочисленных ошибок соединения, разблокирование с 'mysqladmin флеш-хозяев»

Поскольку MySQL начнет считать эти неудачные разъединения «ошибками соединения». И тогда ваша база данных остается непригодной до тех пор, пока вы не запустите FLUSH HOSTS на сервере MySQL. Я знаю это на самом деле, это случилось с нашим проектом NodeJS.

Написать код, чтобы явно закрыть соединение с базой данных перед любым выходом или делают заявление с использованием connection.end() или connection.destroy()

0

Если ваш вопрос «есть ли какие-либо конкретные очистки на тузде стороны, когда я говорю, что серверу я закрываю соединение «тогда ответ« нет », если вы просто выходите из своего клиентского процесса или закрываете розетку так же, как и вызываете connection.end()«