2014-10-23 2 views
2

node.js의 mySQL 연결에 싱글 톤 패턴을 사용하고 있습니다. 전체 응용 프로그램을 사용할 수있는 하나의 연결이 있습니다.이 연결에 대한 시간 제한 설정이 있다면 걱정할 필요가 있습니다. 싱글 톤에 의해 개최.node.js 싱글 톤을 통한 mySQL 연결

이 연결은 앱의 수명주기 동안 유지되어야합니다. 내가 찾은 일부 영속성 예제를 사용하여 수영장을 사용하고 있지만이 예제에 적용되는지 확실하지 않다. 연결 풀이 없다. 단 하나의 연결 만 구성 요소간에 공유된다. 질문은 연결을 죽일 시간 초과 설정이 있는지 여부이다. 오래 지낸 후에?

puremvc.define(
{ 
name: "common.model.connections.App", 

constructor: function() { 
    var mysql = require("mysql"); 
    this.connection = mysql.createConnection({ 
     host: common.Config.mySQLHost, 
     user: common.Config.mySQLUsername, 
     password: common.Config.mySQLPassword, 
     database: common.Config.mySQLDatabase 
    }); 

    this.connection.connect(); 
} 
    }, 
{ 
}, 
{ 
NAME: "App", 
instance: null, 
connection: null, 

getInstance: function() { 
    if(common.model.connections.App.instance == null) { 
     common.model.connections.App.instance = new common.model.connections.Fico(); 
    } 
    return common.model.connections.App.instance; 
}, 

getConnection: function() { 
    return common.model.connections.App.getInstance().connection; 
} 
} 
); 
+0

: 당신은 항상 연결을 얻을 수있는 앱 싱글 톤을 사용하는 경우 시나리오에서는 1 개 이상의 연결을 활성화하지 않아도됩니다 //dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout 연결을 유지하는 시간을 늘리십시오. – fmodos

+0

@fmodos 귀하의 의견에 감사드립니다. 제한된 수명이있는 것처럼 보입니다. 연결, 31536000 (Windows에서 2147483) 비활성 연결을위한 초, 무제한으로 시간 제한을 설정하는 방법이 있습니까? – user2727195

+0

아니요,하지만 BD에 무제한으로 열린 연결을 유지하는 것은 좋은 방법이 아닙니다. – fmodos

답변

-2

이것은 실제로 MySQL의 우려 사항이며 Node.js가 아닙니다. MySQL의 wait_timeout 속성을 사용하여 연결을 유지하는 시간을 늘릴 수 있습니다. 이 속성 아래 here

에 대한

확인 자세한 내용은 현재이 닫히면 새 연결을 만들 것이다 싱글에 대한 코드 예입니다. 이 실제로 MySQL의 관심사와 Node.js를이 속성 HTTP를 사용하려고하지

getConnection: function() { 
    var app = common.model.connections.App.getInstance(); 
    if(!app.connection.isConnected()){ 
     //connect if connection is closed. 
     app.connection.connect(); 
    } 
    return app.connection; 
} 
관련 문제