Maison  >  Article  >  interface Web  >  Comment implémenter le recyclage automatique des connexions par transaction MySQL dans Node.js

Comment implémenter le recyclage automatique des connexions par transaction MySQL dans Node.js

亚连
亚连original
2018-06-08 10:43:561182parcourir

Cet article présente principalement la méthode de Node.js pour implémenter le pool de connexions mysql à l'aide de transactions pour recycler automatiquement les connexions, et analyse les techniques associées de node.js exploitant le pool de connexions mysql pour implémenter des opérations de recyclage de connexions basées sur les transactions sous la forme de exemples. Les amis qui en ont besoin peuvent Pour référence,

L'exemple de cet article décrit comment Node.js implémente le pool de connexions mysql pour recycler automatiquement les connexions à l'aide de transactions. Je le partage avec vous pour votre référence. Les détails sont les suivants :

var mysql = require('mysql'),
  Connection = require('mysql/lib/Connection.js');
var pool = mysql.createPool({
  host: '127.0.0.1',
  database: 'myDB',
  port: 3306,
  user: 'root',
  password: 'root',
  debug: false,
  connectionLimit: 3
});
var execPool = function() {
  pool.getConnection(function(err, conn) {
    transAutoRelease(conn);
    conn.beginTransaction(function(err) {
      if (err) throw err;
      conn.query("INSERT INTO test(id,name,date,test) values(1,'123',now(),1)",
        function(err, ret) {
          if (err) {
            console.error(err);
            conn.rollback(function() {});
          } else {
            console.log(ret);
            conn.query('UPDATE test set id=12321312 where id=1', function(err, ret) {
              if (err) {
                console.error(err);
                conn.rollback(function() {
                });
              } else {
                conn.commit(function() {
                  console.log('success' + JSON.stringify(ret));
                });
              }
            });
          }
        });
    });
  });
}
function after(fn, cb) { return function() {
    fn.apply(this, arguments);
    cb();
  }
}
function transAutoRelease(conn) {
  if (conn.commit == Connection.prototype.commit)
    conn.commit = after(conn.commit, release);
  if (conn.rollback == Connection.prototype.rollback)
    conn.rollback = after(conn.rollback, release);
  function release() {
    if (conn) {
      conn.release();
    }
  }
}
var intervalStartProcess = function() {
  setInterval(function() {
    execPool();
  }, 1000);
}
for (var i = 5 - 1; i >= 0; i--) {
  intervalStartProcess();
}

Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il vous sera utile à l'avenir.

Articles associés :

Pourquoi Node.js deviendra-t-il le développement d'applications web ?

Comment obtenir la progression du téléchargement du fichier dans Node.js ?

Comment implémenter la sous-séquence commune la plus longue en javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn