我想在我的nodejs应用程序中关闭任何mongodb(2.6.8)连接,其中如果conn保持空闲超过5秒。 我可以想到一个解决方案,通过每隔5秒检查连接统计数据,如果它是空闲的,那么关闭conn。
有没有更好的方法来处理这种情况?
答案 0 :(得分:1)
如果我理解正确,您希望计算MongoDB连接保持打开状态的时间长度,如果超过某个阈值,您将关闭它。
您可以通过使用您自己的代码包装mongodb库来实现它,每次计算自上次操作以来经过的时间。
草图,没有运行它:
var mongodb = require('mongodb');
var client;
var lastRun;
// Need to run it once
function init() {
client = = mongodb.MongoClient.connect(...);
lastRun = new Date();
checkConnectionTimeout();
}
function checkConnectionTimeout() {
var newDate = new Date();
var seconds = Math.abs((newDate.getTime() - lastRun.getTime()) / 1000);
if (seconds > TIMEOUT) {
// close the connection...
client = null;
}
}
function execute(func, args) {
lastRun = new Date();
if (client) {
client[func](args);
}
}
然后您可以通过以下方式使用它:
mongoWrapper.init(); // once
mongoWrapper.execute(collection.find, criteria);