From 8049fa0429caec1ce00983cfb0ff0e58ecf03b79 Mon Sep 17 00:00:00 2001 From: john Date: Wed, 8 Aug 2018 20:37:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B0=83=E8=AF=95=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=E7=9A=84SQL=E5=88=97=E8=A1=A8=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E6=96=B9=E6=B3=95PrintQueriedSqls;=E6=94=B9=E8=BF=9Bg?= =?UTF-8?q?time.NewFromTimeStamp=E6=96=B9=E6=B3=95=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=BA=B3=E7=A7=92=E7=BA=A7=E7=9A=84=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=88=B3=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/database/gdb/gdb.go | 3 ++- g/database/gdb/gdb_base.go | 23 ++++++++++++++++++++--- g/database/gdb/gdb_transaction.go | 6 ++++-- g/os/gtime/gtime_time.go | 9 ++++++--- geg/database/mysql/gdb_debug.go | 28 ++++++++++------------------ geg/other/test.go | 19 ++++++++++++------- 6 files changed, 54 insertions(+), 34 deletions(-) diff --git a/g/database/gdb/gdb.go b/g/database/gdb/gdb.go index 22b899add..aaeb3ce71 100644 --- a/g/database/gdb/gdb.go +++ b/g/database/gdb/gdb.go @@ -102,7 +102,8 @@ type Sql struct { Sql string // SQL语句(可能带有预处理占位符) Args []interface{} // 预处理参数值列表 Error error // 执行结果(nil为成功) - Cost int64 // 执行时间消耗(毫秒) + Start int64 // 执行开始时间(毫秒) + End int64 // 执行结束时间(毫秒) Func string // 执行方法名称 } diff --git a/g/database/gdb/gdb_base.go b/g/database/gdb/gdb_base.go index f3754a942..01ec77e2a 100644 --- a/g/database/gdb/gdb_base.go +++ b/g/database/gdb/gdb_base.go @@ -32,7 +32,7 @@ func (db *Db) SetDebug(debug bool) { } } -// 获取已经执行的SQL列表 +// 获取已经执行的SQL列表(仅在debug=true时有效) func (db *Db) GetQueriedSqls() []*Sql { if db.sqls == nil { return nil @@ -49,6 +49,21 @@ func (db *Db) GetQueriedSqls() []*Sql { return sqls } +// 打印已经执行的SQL列表(仅在debug=true时有效) +func (db *Db) PrintQueriedSqls() { + sqls := db.GetQueriedSqls() + for k, v := range sqls { + fmt.Println(len(sqls) - k, ":") + fmt.Println(" Sql :", v.Sql) + fmt.Println(" Args :", v.Args) + fmt.Println(" Error:", v.Error) + fmt.Println(" Start:", gtime.NewFromTimeStamp(v.Start).Format("Y-m-d H:i:s.u")) + fmt.Println(" End :", gtime.NewFromTimeStamp(v.End).Format("Y-m-d H:i:s.u")) + fmt.Println(" Cost :", v.End - v.Start, "ms") + fmt.Println(" Func :", v.Func) + } +} + // 关闭链接 func (db *Db) Close() error { if db.master != nil { @@ -81,7 +96,8 @@ func (db *Db) Query(query string, args ...interface{}) (*sql.Rows, error) { Sql : *p, Args : args, Error : err, - Cost : militime2 - militime1, + Start : militime1, + End : militime2, Func : "DB:Query", }) } else { @@ -108,7 +124,8 @@ func (db *Db) Exec(query string, args ...interface{}) (sql.Result, error) { Sql : *p, Args : args, Error : err, - Cost : militime2 - militime1, + Start : militime1, + End : militime2, Func : "DB:Exec", }) } else { diff --git a/g/database/gdb/gdb_transaction.go b/g/database/gdb/gdb_transaction.go index 33be6cf73..86d51d7dd 100644 --- a/g/database/gdb/gdb_transaction.go +++ b/g/database/gdb/gdb_transaction.go @@ -46,7 +46,8 @@ func (tx *Tx) Query(query string, args ...interface{}) (*sql.Rows, error) { Sql : *p, Args : args, Error : err, - Cost : militime2 - militime1, + Start : militime1, + End : militime2, Func : "TX:Query", }) } else { @@ -73,7 +74,8 @@ func (tx *Tx) Exec(query string, args ...interface{}) (sql.Result, error) { Sql : *p, Args : args, Error : err, - Cost : militime2 - militime1, + Start : militime1, + End : militime2, Func : "TX:Exec", }) } else { diff --git a/g/os/gtime/gtime_time.go b/g/os/gtime/gtime_time.go index 1c4a4f8c6..b94043ff8 100644 --- a/g/os/gtime/gtime_time.go +++ b/g/os/gtime/gtime_time.go @@ -66,10 +66,13 @@ func NewFromStrLayout (str string, layout string) *Time { return nil } -// 时间戳转换为时间对象 +// 时间戳转换为时间对象,时间戳支持到纳秒的数值 func NewFromTimeStamp (timestamp int64) *Time { - return &Time{ - time.Unix(timestamp, 0), + for timestamp < 1e18 { + timestamp *= 10 + } + return &Time { + time.Unix(int64(timestamp/1e9), timestamp%1e9), } } diff --git a/geg/database/mysql/gdb_debug.go b/geg/database/mysql/gdb_debug.go index a5bcbfccd..9d17c4bf1 100644 --- a/geg/database/mysql/gdb_debug.go +++ b/geg/database/mysql/gdb_debug.go @@ -1,20 +1,19 @@ package main import ( - "fmt" "gitee.com/johng/gf/g/database/gdb" ) func main() { - gdb.AddDefaultConfigNode(gdb.ConfigNode { - Host : "127.0.0.1", - Port : "3306", - User : "root", - Pass : "123456", - Name : "test", - Type : "mysql", - Role : "master", - Charset : "utf8", + gdb.AddDefaultConfigNode(gdb.ConfigNode{ + Host: "127.0.0.1", + Port: "3306", + User: "root", + Pass: "123456", + Name: "test", + Type: "mysql", + Role: "master", + Charset: "utf8", }) db, err := gdb.New() if err != nil { @@ -29,12 +28,5 @@ func main() { // 构造一条错误查询 db.Table("user").Where("no_such_field=?", "just_test").One() - for k, v := range db.GetQueriedSqls() { - fmt.Println(k, ":") - fmt.Println("Sql :", v.Sql) - fmt.Println("Args :", v.Args) - fmt.Println("Error:", v.Error) - fmt.Println("Cost :", v.Cost) - fmt.Println("Func :", v.Func) - } + db.PrintQueriedSqls() } \ No newline at end of file diff --git a/geg/other/test.go b/geg/other/test.go index b54b9da63..ab813f9ee 100644 --- a/geg/other/test.go +++ b/geg/other/test.go @@ -2,14 +2,19 @@ package main import ( "fmt" - "gitee.com/johng/gf/g/util/gregex" + "gitee.com/johng/gf/g/os/gtime" ) func main() { - name := "page" - path := "/page/template/{page}.html" - rule := fmt.Sprintf(`{%s}`, name, name) - tpl, err := gregex.ReplaceString(rule, `{.page}`, path) - fmt.Println(err) - fmt.Println(tpl) + fmt.Println(gtime.Second()) + fmt.Println(gtime.Nanosecond()) + t := gtime.Millisecond() + for t < 1e18 { + t *= 10 + } + fmt.Println(t) + fmt.Println(int64(t/1e9)) + fmt.Println(t%1e9) + + fmt.Println(gtime.NewFromTimeStamp(t).Format("Y-m-d H:i:s.u")) }