【发布时间】:2014-12-19 11:11:21
【问题描述】:
我在 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;
}
}
);
【问题讨论】:
-
这实际上是mysql问题而不是node.js,尝试使用属性dev.mysql.com/doc/refman/5.0/en/…增加保持连接打开的时间
-
@fmodos 感谢您的评论,似乎连接的寿命有限,非活动连接为 31536000(Windows 上为 2147483)秒,有没有办法将超时设置为无限制?
-
否,但保持与 BD 的无限打开连接不是一个好方法。
-
检查连接是否关闭然后打开它,然后在函数getConnection中返回连接。您可以使用单例来存储连接对象实例,但这并不意味着该对象将始终打开连接。
-
getconnection 是正确的地方,我将在几个小时内与这对夫妇一起编辑我的答案......现在有点忙
标签: mysql node.js connection-pooling