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 {
|
||||
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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user