srvMysqlMgr.lua 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. --[[
  2. Descripttion:数据库链接管理
  3. version:
  4. Author: Neo,Huang
  5. Date: 2022-07-04 14:49:56
  6. LastEditors: Neo,Huang
  7. LastEditTime: 2022-07-04 15:26:04
  8. --]]
  9. local skynet = require "skynet"
  10. local snax = require "snax"
  11. local lib_logger = require("log.lib_logger")
  12. local logger
  13. local MYSQL_DB_POOL = {}
  14. local MYSQL_CONFIG = {}
  15. local function init_mysql_pool(name, cf)
  16. local pool = {}
  17. MYSQL_CONFIG[name] = cf
  18. for i = 1, 5 do
  19. local db = skynet.newservice("srvMysql", cjson_encode(cf), 4)
  20. pool[i] = db
  21. end
  22. MYSQL_DB_POOL[name] = pool
  23. end
  24. local function destory_mysql_pool(name)
  25. local pool = MYSQL_DB_POOL[name]
  26. for i = 1, #pool do
  27. local db = pool[i]
  28. snax.kill(db)
  29. end
  30. pool = {}
  31. end
  32. function init()
  33. logger = lib_logger.get_logger("mysqlMgr")
  34. end
  35. function exit()
  36. for k, v in pairs(MYSQL_DB_POOL) do
  37. destory_mysql_pool(k)
  38. end
  39. MYSQL_DB_POOL = {}
  40. end
  41. function response.acquire(name)
  42. local cf = MYSQL_CONFIG[name]
  43. if not cf then
  44. logger.warn("not %s config mysql ", name)
  45. return
  46. end
  47. local pool = MYSQL_DB_POOL[name]
  48. while true do
  49. if not pool or #pool < #cf then
  50. skynet.sleep(100)
  51. else
  52. break
  53. end
  54. end
  55. if #pool == 0 then
  56. logger.error("sup response.acquire pool is emtpy")
  57. end
  58. return pool
  59. end
  60. function response.init(name, cf)
  61. logger.info("init %s", tostring(name))
  62. if MYSQL_DB_POOL[name] then
  63. logger.warn("%s cf mysql already init", name)
  64. return
  65. end
  66. init_mysql_pool(name, cf)
  67. end