From 925649f61620b12d00f18cd2aef6ae5abc196c60 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 18 May 2018 11:01:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=8D=E5=8A=A1=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E6=97=B6=E7=9A=84=E6=8E=A7=E5=88=B6=E5=99=A8=E5=8F=8A?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=AF=B9=E8=B1=A1=E6=96=B9=E6=B3=95=E4=B8=A2?= =?UTF-8?q?=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/net/ghttp/ghttp_server_admin.go | 15 +++++++++------ g/net/ghttp/ghttp_server_service.go | 2 +- geg/net/ghttp/reload/simple.go | 15 +++++++++------ 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/g/net/ghttp/ghttp_server_admin.go b/g/net/ghttp/ghttp_server_admin.go index fbee04ea1..7720c6338 100644 --- a/g/net/ghttp/ghttp_server_admin.go +++ b/g/net/ghttp/ghttp_server_admin.go @@ -22,6 +22,9 @@ import ( const ( gADMIN_ACTION_INTERVAL_LIMIT = 3000 // (毫秒)服务开启后允许执行管理操作的间隔限制 + gADMIN_ACTION_RELOADING = 1 + gADMIN_ACTION_RESTARTING = 2 + gADMIN_ACTION_SHUTINGDOWN = 4 ) // 用于服务管理的对象 @@ -34,9 +37,6 @@ var serverActionLocker sync.Mutex var serverActionLastTime = gtype.NewInt64(gtime.Millisecond()) // 当前服务进程所处的互斥管理操作状态 -// 1 : reload -// 2 : restart -// 4 : shutdown var serverProcessStatus = gtype.NewInt() // 服务管理首页 @@ -111,6 +111,7 @@ func (s *Server) Reload() error { if err := s.checkActionFrequence(); err != nil { return err } + serverProcessStatus.Set(gADMIN_ACTION_RELOADING) glog.Printfln("%d: server reloading", gproc.Pid()) sendProcessMsg(gproc.Pid(), gMSG_RELOAD, nil) return nil @@ -126,6 +127,7 @@ func (s *Server) Restart() error { if err := s.checkActionFrequence(); err != nil { return err } + serverProcessStatus.Set(gADMIN_ACTION_RESTARTING) glog.Printfln("%d: server restarting", gproc.Pid()) sendProcessMsg(gproc.Pid(), gMSG_RESTART, nil) return nil @@ -141,6 +143,7 @@ func (s *Server) Shutdown() error { if err := s.checkActionFrequence(); err != nil { return err } + serverProcessStatus.Set(gADMIN_ACTION_SHUTINGDOWN) glog.Printfln("%d: server shutting down", gproc.Pid()) sendProcessMsg(gproc.PPid(), gMSG_SHUTDOWN, nil) return nil @@ -161,11 +164,11 @@ func (s *Server) checkActionStatus() error { status := serverProcessStatus.Val() if status > 0 { switch status { - case 1: + case gADMIN_ACTION_RELOADING: return errors.New("server is reloading") - case 2: + case gADMIN_ACTION_RESTARTING: return errors.New("server is restarting") - case 4: + case gADMIN_ACTION_SHUTINGDOWN: return errors.New("server is shutting down") } } diff --git a/g/net/ghttp/ghttp_server_service.go b/g/net/ghttp/ghttp_server_service.go index 678d3e652..a40c2b61d 100644 --- a/g/net/ghttp/ghttp_server_service.go +++ b/g/net/ghttp/ghttp_server_service.go @@ -53,7 +53,7 @@ func (s *Server)mergeMethodNameToPattern(pattern string, name string) string { array := strings.Split(pattern, "@") // 分离URI(其实可能包含HTTP Method) uri := array[0] - uri = strings.TrimRight(uri, "/") + "/" + uri = strings.TrimRight(uri, "/") + "/" + method // 加上指定域名后缀 if len(array) > 1 { return uri + "@" + array[1] diff --git a/geg/net/ghttp/reload/simple.go b/geg/net/ghttp/reload/simple.go index 0129446a8..5ba618a84 100644 --- a/geg/net/ghttp/reload/simple.go +++ b/geg/net/ghttp/reload/simple.go @@ -1,22 +1,25 @@ package main import ( - "gitee.com/johng/gf/g" - "gitee.com/johng/gf/g/net/ghttp" - "gitee.com/johng/gf/g/os/gproc" "time" + "gitee.com/johng/gf/g" + "gitee.com/johng/gf/g/os/gproc" + "gitee.com/johng/gf/g/net/ghttp" ) func main() { s := g.Server() + s.BindHandler("/", func(r *ghttp.Request){ + r.Response.Writeln("哈喽!") + }) + s.BindHandler("/pid", func(r *ghttp.Request){ + r.Response.Writeln(gproc.Pid()) + }) s.BindHandler("/sleep", func(r *ghttp.Request){ r.Response.Writeln(gproc.Pid()) time.Sleep(10*time.Second) r.Response.Writeln(gproc.Pid()) }) - s.BindHandler("/pid", func(r *ghttp.Request){ - r.Response.Writeln(gproc.Pid()) - }) s.EnableAdmin() s.SetPort(8199) s.Run()