本文整理匯總了Golang中database/sql.DB.SetConnMaxLifetime方法的典型用法代碼示例。如果您正苦於以下問題:Golang DB.SetConnMaxLifetime方法的具體用法?Golang DB.SetConnMaxLifetime怎麽用?Golang DB.SetConnMaxLifetime使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類database/sql.DB
的用法示例。
在下文中一共展示了DB.SetConnMaxLifetime方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: hit
func (a *Attacker) hit(tr Targeter, tm time.Time) *Result {
var (
res = Result{Timestamp: tm}
tgt Target
err error
)
defer func() {
res.Latency = time.Since(tm)
if err != nil {
res.Error = err.Error()
}
}()
if err = tr(&tgt); err != nil {
return &res
}
req, err := tgt.Query()
if err != nil {
return &res
}
/*
a.cnn, err = sql.Open("mysql", a.dsn)
if err != nil {
res.Code = 500
res.Error = err.Error()
return &res
}
defer a.cnn.Close()
a.cnn.SetMaxIdleConns(a.maxIdleConns)
a.cnn.SetMaxOpenConns(a.maxOpenConns)
*/
//log.Printf("query:%s", req)
var r *sql.Rows
if a.persistent {
r, err = a.cnn.Query(req)
} else {
var cnn *sql.DB
cnn, err = sql.Open("mysql", a.dsn)
cnn.SetMaxIdleConns(0)
cnn.SetMaxOpenConns(1)
cnn.SetConnMaxLifetime(1 * time.Nanosecond)
if err != nil {
res.Code = 500
res.Error = err.Error()
return &res
}
r, err = cnn.Query(req)
}
if err != nil {
// ignore redirect errors when the user set --redirects=NoFollow
if a.redirects == NoFollow && strings.Contains(err.Error(), "stopped after") {
err = nil
}
return &res
}
defer r.Close()
num := 0
for r.Next() {
num++
/*
var id interface{}
if err := r.Scan(&id); err != nil {
res.Code = 501
res.Error = err.Error()
res.Error = fmt.Sprintf("row scan err:%s: query:%s", err.Error(), req)
return &res
}
*/
}
//fmt.Fprintf(os.Stderr, "%d,", num)
res.BytesIn = 0
res.BytesOut = 0
err = r.Err()
if err == nil {
if num == 0 {
res.Code = 201
} else {
res.Code = 200
}
} else {
res.Code = 500
res.Error = fmt.Sprintf("%s: query:%s", err.Error(), req)
}
return &res
}