node.js mySQL连接通过一个单例

我在node.js中为mySQL连接使用了一个singleton模式,并且只有一个连接可供整个应用程序使用,我担心的是如果单连接所持有的连接有一些超时设置。

这个连接应该在应用程序的整个生命周期中生活。 我search并find了一些使用池的持久性示例,但不知道这是否适用于此示例,没有连接池,组件之间只有一个要共享的连接,问题是,是否有一些超时设置会终止连接被搁置了很长时间之后?

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

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

在这里查看更多关于此属性的细节

下面是你的单例的代码示例,它将在当前closures时创build一个新的连接。 在这种情况下,如果您始终使用App Singleton获取连接,则永远不会有多个连接处于活动状态:

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