瀏覽代碼

每次查询都创建一个 mysql 长连接,使用完即关闭

DevYK 3 年之前
父節點
當前提交
f608befe4c
共有 3 個文件被更改,包括 81 次插入13 次删除
  1. 0 5
      model/moralis_sdk.js
  2. 74 5
      model/mysql_db.js
  3. 7 3
      test/db_test.js

+ 0 - 5
model/moralis_sdk.js

@@ -540,11 +540,6 @@ const collectCoins = async (obj) => {
                 logger.log('udpateNativeValue=', tempNativeValue);
             } else return "get native value error."
 
-            // //更新本地余额
-            // var updateBalance = await updateNativeBalance(my_account_all_coins.native.balance, obj)
-            // if (updateBalance)
-            //     my_account_all_coins.native.balance = updateBalance;
-            // else return "error."
         }
 
         obj.chain = chain;

+ 74 - 5
model/mysql_db.js

@@ -12,13 +12,35 @@ var username = db_config.mysql.USERNAME
 var password = db_config.mysql.PASSWORD
 var database = db_config.mysql.DATABASE
 var tablename = db_config.mysql.TABLENAME
-var MYSQL_INSTANCE = mysql.createConnection({
+
+
+var opts = {
     host: host,
     user: username,
     password: password,
     port: port,
     database: database,
-});
+}
+var MYSQL_INSTANCE = null;
+
+// opts.connectionLimit = 10
+// MYSQL_INSTANCE = mysql.createPool(opts);
+createDefMysqlConnect();
+
+function createDefMysqlConnect() {
+    disDefMysqlConnect();
+    logger.log('createDefMysqlConnect')
+    MYSQL_INSTANCE = mysql.createConnection(opts);
+    MYSQL_INSTANCE.connect();
+}
+
+function disDefMysqlConnect() {
+    if (MYSQL_INSTANCE) {
+        MYSQL_INSTANCE.end();
+        MYSQL_INSTANCE = null;
+        logger.debug('dis mysql')
+    }
+}
 
 // logger.log('connected to mysql ps=', db_config.mysql)
 MYSQL_INSTANCE.on('connect', () => {
@@ -26,11 +48,42 @@ MYSQL_INSTANCE.on('connect', () => {
 })
 
 MYSQL_INSTANCE.on('error', function (err) {
-    logger.log('mysql  Error =>', err);
+    logger.error('mysql  Error =>', err);
+});
+
+
+MYSQL_INSTANCE.on('restart', function () {
+    logger.error('mysql  restart =>');
 });
-MYSQL_INSTANCE.connect();
+
+MYSQL_INSTANCE.on('acquire', function (connection) {
+    logger.log('Connection %d acquired', connection.threadId);
+});
+
+MYSQL_INSTANCE.on('connection', function (connection) {
+    logger.log('mysql connection', connection);
+});
+MYSQL_INSTANCE.on('enqueue', function () {
+    logger.log('Waiting for available connection slot');
+});
+
+MYSQL_INSTANCE.on('release', function (connection) {
+    logger.log('Connection %d released', connection.threadId);
+});
+
+// MYSQL_INSTANCE
+
+MYSQL_INSTANCE.on('uncaughtException', function (err) {
+    logger.error('mysql uncaughtException  =>', err);
+    if (err.code == "PROTOCOL_CONNECTION_LOST") {
+        // mysql.restart();
+    }
+});
+
+
 
 function queryCompanyInfoFromId(id) {
+    createDefMysqlConnect()
     var sql_main = 'select * from '
     var sql_table_name = 'company_key_manage'
     var sql_where = ' WHERE '
@@ -39,6 +92,7 @@ function queryCompanyInfoFromId(id) {
     var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
     logger.debug('queryCompanyPrivateKeyFromId new_sql=', new_sql);
     return new Promise((resolve) => {
+        // MYSQL_INSTANCE.getConnection(function (err, connection) {
         MYSQL_INSTANCE.query(
             new_sql, [sql_where_value],
             function selectCb(err, results) {
@@ -54,12 +108,15 @@ function queryCompanyInfoFromId(id) {
                     err: err,
                     results: ret
                 });
+                disDefMysqlConnect();
             }
         );
+
+        // })
+
     })
 }
 
-
 /**
  * 查询用户私钥
  * 
@@ -67,6 +124,7 @@ function queryCompanyInfoFromId(id) {
  * @returns 
  */
 function queryUserPrivateKeyFromUserAddress(user_address) {
+    createDefMysqlConnect()
     var sql_main = 'select * from '
     var sql_table_name = tablename
     var sql_where = ' WHERE '
@@ -75,6 +133,8 @@ function queryUserPrivateKeyFromUserAddress(user_address) {
     var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
     logger.debug('queryUserPrivateKeyFromUserAddress new_sql=', new_sql);
     return new Promise((resolve) => {
+
+        // MYSQL_INSTANCE.getConnection(function (err, connection) {
         MYSQL_INSTANCE.query(
             new_sql, [sql_where_value],
             function selectCb(err, results) {
@@ -90,8 +150,13 @@ function queryUserPrivateKeyFromUserAddress(user_address) {
                     err: err,
                     results: ret
                 });
+                disDefMysqlConnect();
             }
         );
+
+        // })
+
+
     })
 }
 
@@ -109,7 +174,9 @@ function queryAllUserPrivateKeyAndUserAddress() {
     var sql_where_name = '  '
     var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
     logger.debug('queryAllUserPrivateKeyAndUserAddress new_sql=', new_sql);
+    createDefMysqlConnect()
     return new Promise((resolve) => {
+        // MYSQL_INSTANCE.getConnection(function (err, connection) {
         MYSQL_INSTANCE.query(
             new_sql, [],
             function selectCb(err, results) {
@@ -119,6 +186,8 @@ function queryAllUserPrivateKeyAndUserAddress() {
                 }
             }
         );
+        // })
+        disDefMysqlConnect();
     })
 }
 

+ 7 - 3
test/db_test.js

@@ -28,9 +28,13 @@ router.post('/get', async (ctx) => {
 router.post('/queryUserPrivateKey', async (ctx) => {
     const obj = ctx.request.body;
     console.log("queryUserPrivateKey:",obj)
-    await mysql.queryUserPrivateKeyFromUserAddress(obj.userAddress).then(function (mysqlDbResp){
-        ctx.body = "results:" +  JSON.stringify(mysqlDbResp)
-        console.log('mysqlDbResp=', JSON.stringify(mysqlDbResp));
+    // await mysql.queryUserPrivateKeyFromUserAddress(obj.userAddress).then(function (mysqlDbResp){
+    //     ctx.body = "results:" +  JSON.stringify(mysqlDbResp)
+    //     console.log('mysqlDbResp=', JSON.stringify(mysqlDbResp));
+    // })
+
+    await mysql.queryCompanyInfoFromId(0).then(e=>{
+        ctx.body = "results:" +  e
     })
     
 })