node.js mySQL通过单例连接

时间:2014-10-23 17:32:37

标签: mysql node.js connection-pooling

我在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;
}
}
);

1 个答案:

答案 0 :(得分:-2)

这实际上是MySQL的一个问题,而不是Node.js.您可以使用MySQL的属性wait_timeout来增加保持连接打开的时间。

查看有关此媒体资源的更多详情here

下面是您的单身人士的代码示例,它将在当前关闭时创建新连接。在该场景中,如果您始终使用App Singleton获取连接,则永远不会有超过1个连接处于活动状态:

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