mysql - 在哪里结束nodejs上的mysql池连接?

标签 mysql node.js pool

我在 Nodejs 上使用 MySQL。我正在使用 mysql pool 创建连接:

Var mysqk = require ('mysql');
Var pool = mysql.createPool ({my configs});

我的问题是: 我将在应用中的哪个位置使用文档中报告的 pool.end()

例如:在我的 www 文件中,我创建了一个代码来释放我在代码中指出的其他内容。我应该在那里使用 pool.end() 吗?

var app     = require('../app');
var debug   = require('debug')('cancela:server');
var http    = require('http');
var port = normalizePort(process.env.PORT || '4000');
app.set('port', port);
var server = http.createServer(app);

// my app codes...
..
.
.

process.once('SIGTERM', end);
process.once('SIGINT', end);

function end() {

    server.close(function(err){

    if(err) throw err();

        // Should I end the Pool connection here?  <<<<<<===================================
        // pool.end(function (err) {
        //   // all connections in the pool have ended 
        // });

        console.log('Server endded!');        

        /* exit gracefully */
        process.exit();
    });
}

最佳答案

有时您出于某种原因想要手动释放连接池,以便您可以在最终重新创建连接池之前使用 pool.end()

大多数时候你想在你的服务器即将关闭时释放它,这样你就可以做你想做的事。注意函数调用process.exit()的位置。必须在连接释放后调用,否则池无法释放完毕。

function end() {
    server.close(function (err) {
        if (err) throw err;
        console.log('Server endded!');

        pool.end(function (err) {
            if (err) throw err;

            process.exit();
        });
    });
}

关于mysql - 在哪里结束nodejs上的mysql池连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289797/

相关文章:

mysql - 在我的计算中添加百分号 (%)

php - CSV 导出脚本仅在 IE 中生成错误?

node.js - bash:bower:找不到命令,我不知道该怎么办

java - 是否有任何池解决方案允许将 key 传递给 acquire/take 方法

go - 具有多个 goroutine 的内存池和缓冲 channel

php - 如何与孙子一起展示 child ?

php - 解析sql响应数组

javascript - 如何在 sails.js Controller 中检索列表/索引 View 的一对一关联?

node.js - Cloudinary异步等待一次上传多个图像,然后保存到 Node js中的数组

java - 从池中消除突然关闭的套接字,Java