javascript - 带有回调的 Node Cron 在调用退出后出现 Cannot enqueue Handshake 错误

标签 javascript mysql node.js cron

我正在尝试以特定间隔查询数据库。所以我用的是 Node Jade 米。我每分钟创建一个连接,并在查询完成后关闭它。但它只在第一分钟有效,下一分钟它会在调用退出后抛出 Cannot enqueue Handshake 的错误,即使我正在使用回调。有人纠正我做错的事情

app.js

var sController = require('./sController');
 cron.schedule('* * * * *',function(){
  console.log("I am running every minute");
  var params ="dddd";
  sController.updateDb(params,function(err,res){
  console.log("xxxx");
 });

});

sController.js

var sModel = require('./smodel');
var sController = function(){}

sController.prototype.updateDb = function(params,callback){
    sModel.updateDb(params,function(res,err){
        if(res){
            console.log("kkk");
        }
        callback(err,res);
    });
}
module.exports = new sController();

smodel.js

var connection = mysql.createConnection(mysqlConfig);
function mysqlConnect() {
    connection.connect();
}
function mysqlClose() {
    if(!connection._protocol._ended){
        connection.end();
    }
}
var sModel = function() {};

sModel.prototype.updateDb = function(params,callback){
    updateDb(params, function(err, res) {
        callback(err,res);
    });
};
function updateDb(params,callback){
    var query = 'SELECT * from tablename';
    mysqlConnect();
    connection.query(query,function(err,rows,fields){
        if(!err){
            console.log(rows.length);
        }
         callback(err,rows);
    });
    mysqlClose();
}

module.exports = new sModel();

最佳答案

简短回答

你应该使用mysql连接池。查看官方文档 https://github.com/mysqljs/mysql#pooling-connections

长答案

服务器需要足够的时间和资源来创建连接。池保存连接实例并重用。查看信息https://en.wikipedia.org/wiki/Connection_pool

关于javascript - 带有回调的 Node Cron 在调用退出后出现 Cannot enqueue Handshake 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837944/

相关文章:

javascript - html中的复制命令用于chrome复制多个文本框

javascript - 如何启用 jquery ui 按钮

javascript,如果用户输入正确,则转到 x 子页面

php - 如何使用php删除表中特定数量的行

mysql - 在 MySQL 服务启动时运行 SQL 查询

c# - 这段代码是什么意思? (c# 使用 mysql)

node.js - 聚合查询中 $geoNear 存在歧义

javascript - 如何使用jquery ajax和codeigniter执行编辑和删除操作

javascript - 在nodejs中解析一个json树

javascript - 在应用程序和 Node 中使用 ES6 模块,同时使用 Webpack-Dev-Middleware 和 Express