mirror of
https://github.com/duanhf2012/origin.git
synced 2026-02-04 06:54:45 +08:00
DBModule模块优化
This commit is contained in:
@@ -24,10 +24,11 @@ const (
|
|||||||
type DBModule struct {
|
type DBModule struct {
|
||||||
service.BaseModule
|
service.BaseModule
|
||||||
db *sql.DB
|
db *sql.DB
|
||||||
URL string
|
url string
|
||||||
UserName string
|
username string
|
||||||
Password string
|
password string
|
||||||
DBName string
|
dbname string
|
||||||
|
maxconn int
|
||||||
|
|
||||||
syncExecuteFun chan SyncFun
|
syncExecuteFun chan SyncFun
|
||||||
syncCoroutineNum int
|
syncCoroutineNum int
|
||||||
@@ -44,10 +45,23 @@ type DBResult struct {
|
|||||||
blur bool
|
blur bool
|
||||||
}
|
}
|
||||||
|
|
||||||
//OnInit ...
|
func (slf *DBModule) Init(maxConn int, url string, userName string, password string, dbname string) error {
|
||||||
func (slf *DBModule) OnInit() error {
|
slf.url = url
|
||||||
|
slf.maxconn = maxConn
|
||||||
|
slf.username = userName
|
||||||
|
slf.password = password
|
||||||
|
slf.dbname = dbname
|
||||||
slf.syncExecuteFun = make(chan SyncFun, MAX_EXECUTE_FUN)
|
slf.syncExecuteFun = make(chan SyncFun, MAX_EXECUTE_FUN)
|
||||||
return slf.Connect(10)
|
|
||||||
|
return slf.Connect(slf.maxconn)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (slf *DBModule) OnInit() error {
|
||||||
|
for i := 0; i < slf.syncCoroutineNum; i++ {
|
||||||
|
go slf.RunExecuteDBCoroutine()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//Close ...
|
//Close ...
|
||||||
@@ -234,10 +248,10 @@ func (slf *DBResult) mapSlice2interface(data []map[string]string, in interface{}
|
|||||||
// Connect ...
|
// Connect ...
|
||||||
func (slf *DBModule) Connect(maxConn int) error {
|
func (slf *DBModule) Connect(maxConn int) error {
|
||||||
cmd := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=true&loc=%s",
|
cmd := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=true&loc=%s",
|
||||||
slf.UserName,
|
slf.username,
|
||||||
slf.Password,
|
slf.password,
|
||||||
slf.URL,
|
slf.url,
|
||||||
slf.DBName,
|
slf.dbname,
|
||||||
url.QueryEscape(time.Local.String()))
|
url.QueryEscape(time.Local.String()))
|
||||||
|
|
||||||
db, err := sql.Open("mysql", cmd)
|
db, err := sql.Open("mysql", cmd)
|
||||||
@@ -256,9 +270,7 @@ func (slf *DBModule) Connect(maxConn int) error {
|
|||||||
db.SetConnMaxLifetime(time.Second * 90)
|
db.SetConnMaxLifetime(time.Second * 90)
|
||||||
|
|
||||||
slf.syncCoroutineNum = maxConn
|
slf.syncCoroutineNum = maxConn
|
||||||
for i := 0; i < slf.syncCoroutineNum; i++ {
|
|
||||||
go slf.RunExecuteDBCoroutine()
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,7 +368,6 @@ func (slf *DBModule) RunExecuteDBCoroutine() {
|
|||||||
select {
|
select {
|
||||||
case <-slf.ExitChan:
|
case <-slf.ExitChan:
|
||||||
service.GetLogger().Printf(LEVER_WARN, "stopping module %s...", fmt.Sprintf("%T", slf))
|
service.GetLogger().Printf(LEVER_WARN, "stopping module %s...", fmt.Sprintf("%T", slf))
|
||||||
fmt.Println("stopping module %s...", fmt.Sprintf("%T", slf))
|
|
||||||
return
|
return
|
||||||
case fun := <-slf.syncExecuteFun:
|
case fun := <-slf.syncExecuteFun:
|
||||||
fun()
|
fun()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package sysmodule_test
|
package sysmodule_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/duanhf2012/origin/sysmodule"
|
"github.com/duanhf2012/origin/sysmodule"
|
||||||
@@ -8,14 +9,12 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestDBModule(t *testing.T) {
|
func TestDBModule(t *testing.T) {
|
||||||
db := sysmodule.DBModule{
|
db := sysmodule.DBModule{}
|
||||||
URL: "192.168.0.5:3306",
|
db.ExitChan = make(chan bool)
|
||||||
UserName: "root",
|
db.WaitGroup = new(sync.WaitGroup)
|
||||||
Password: "Root!!2018",
|
|
||||||
DBName: "QuantFundsDB",
|
|
||||||
}
|
|
||||||
db.Connect(100)
|
|
||||||
|
|
||||||
|
db.Init(100, "192.168.0.5:3306", "root", "Root!!2018", "QuantFundsDB")
|
||||||
|
db.OnInit()
|
||||||
res := db.Query("select * from tbl_fun_heelthrow where id >= 1")
|
res := db.Query("select * from tbl_fun_heelthrow where id >= 1")
|
||||||
if res.Err != nil {
|
if res.Err != nil {
|
||||||
t.Error(res.Err)
|
t.Error(res.Err)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
|
|
||||||
func TestHttpClientPoolModule(t *testing.T) {
|
func TestHttpClientPoolModule(t *testing.T) {
|
||||||
c := sysmodule.HttpClientPoolModule{}
|
c := sysmodule.HttpClientPoolModule{}
|
||||||
c.Init(10)
|
c.Init(10, "")
|
||||||
|
|
||||||
rsp := c.Request(http.MethodGet, "https://www.baidu.com/", nil, nil)
|
rsp := c.Request(http.MethodGet, "https://www.baidu.com/", nil, nil)
|
||||||
fmt.Println(rsp.Err)
|
fmt.Println(rsp.Err)
|
||||||
|
|||||||
Reference in New Issue
Block a user