DBModule模块优化

This commit is contained in:
boyce
2019-02-27 18:30:14 +08:00
parent 29acb70e9e
commit cafdb2990d
3 changed files with 33 additions and 23 deletions

View File

@@ -24,10 +24,11 @@ const (
type DBModule struct {
service.BaseModule
db *sql.DB
URL string
UserName string
Password string
DBName string
url string
username string
password string
dbname string
maxconn int
syncExecuteFun chan SyncFun
syncCoroutineNum int
@@ -44,10 +45,23 @@ type DBResult struct {
blur bool
}
//OnInit ...
func (slf *DBModule) OnInit() error {
func (slf *DBModule) Init(maxConn int, url string, userName string, password string, dbname string) error {
slf.url = url
slf.maxconn = maxConn
slf.username = userName
slf.password = password
slf.dbname = dbname
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 ...
@@ -234,10 +248,10 @@ func (slf *DBResult) mapSlice2interface(data []map[string]string, in interface{}
// Connect ...
func (slf *DBModule) Connect(maxConn int) error {
cmd := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8&parseTime=true&loc=%s",
slf.UserName,
slf.Password,
slf.URL,
slf.DBName,
slf.username,
slf.password,
slf.url,
slf.dbname,
url.QueryEscape(time.Local.String()))
db, err := sql.Open("mysql", cmd)
@@ -256,9 +270,7 @@ func (slf *DBModule) Connect(maxConn int) error {
db.SetConnMaxLifetime(time.Second * 90)
slf.syncCoroutineNum = maxConn
for i := 0; i < slf.syncCoroutineNum; i++ {
go slf.RunExecuteDBCoroutine()
}
return nil
}
@@ -356,7 +368,6 @@ func (slf *DBModule) RunExecuteDBCoroutine() {
select {
case <-slf.ExitChan:
service.GetLogger().Printf(LEVER_WARN, "stopping module %s...", fmt.Sprintf("%T", slf))
fmt.Println("stopping module %s...", fmt.Sprintf("%T", slf))
return
case fun := <-slf.syncExecuteFun:
fun()

View File

@@ -1,6 +1,7 @@
package sysmodule_test
import (
"sync"
"testing"
"github.com/duanhf2012/origin/sysmodule"
@@ -8,14 +9,12 @@ import (
)
func TestDBModule(t *testing.T) {
db := sysmodule.DBModule{
URL: "192.168.0.5:3306",
UserName: "root",
Password: "Root!!2018",
DBName: "QuantFundsDB",
}
db.Connect(100)
db := sysmodule.DBModule{}
db.ExitChan = make(chan bool)
db.WaitGroup = new(sync.WaitGroup)
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")
if res.Err != nil {
t.Error(res.Err)

View File

@@ -10,7 +10,7 @@ import (
func TestHttpClientPoolModule(t *testing.T) {
c := sysmodule.HttpClientPoolModule{}
c.Init(10)
c.Init(10, "")
rsp := c.Request(http.MethodGet, "https://www.baidu.com/", nil, nil)
fmt.Println(rsp.Err)