From f2a47a4c9e2ffd0b15ee77b0de1343edea41ae53 Mon Sep 17 00:00:00 2001 From: john Date: Fri, 29 Jun 2018 13:53:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DLinux=E4=B8=8B=E7=9A=84?= =?UTF-8?q?=E5=B9=B3=E6=BB=91=E9=87=8D=E5=90=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO | 2 +- g/net/ghttp/ghttp_server_admin.go | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index d2e58590a..a1ee9dcca 100644 --- a/TODO +++ b/TODO @@ -11,7 +11,7 @@ Cookie&Session数据池化处理; ghttp.Client增加proxy特性; gtime增加对时区转换的封装,并简化失去转换时对类似+80500时区的支持; 改进gf-orm的where查询功能,参考thinkphp 里的where查询语法; - +改进ghttp.Server平滑重启机制,当新进程接管服务后,再使用进程间通信方式通知父进程销毁; DONE: diff --git a/g/net/ghttp/ghttp_server_admin.go b/g/net/ghttp/ghttp_server_admin.go index 95610013d..48f6fa95c 100644 --- a/g/net/ghttp/ghttp_server_admin.go +++ b/g/net/ghttp/ghttp_server_admin.go @@ -240,8 +240,11 @@ func restartWebServers(newExeFilePath...string) { }) } else { forkReloadProcess(newExeFilePath...) - go gracefulShutdownWebServers() - doneChan <- struct{}{} + // 异步2秒后再执行关闭,目的是让新进程将服务成功接管后,再关闭自身进程(后续可以根据进程间通信来改进) + gtime.SetTimeout(2*time.Second, func() { + go gracefulShutdownWebServers() + doneChan <- struct{}{} + }) } }