From ef86349c6879f417401cf5cf7920bb8c3b27ea67 Mon Sep 17 00:00:00 2001 From: invzhi Date: Tue, 12 Dec 2017 19:30:41 +0800 Subject: [PATCH] Rename 'maxlifetime' to 'maxLifeTime' --- zh/06.2.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/zh/06.2.md b/zh/06.2.md index 06a3b75c..f57df6e9 100644 --- a/zh/06.2.md +++ b/zh/06.2.md @@ -38,15 +38,15 @@ type Manager struct { cookieName string //private cookiename lock sync.Mutex // protects session provider Provider - maxlifetime int64 + maxLifeTime int64 } -func NewManager(provideName, cookieName string, maxlifetime int64) (*Manager, error) { +func NewManager(provideName, cookieName string, maxLifeTime int64) (*Manager, error) { provider, ok := provides[provideName] if !ok { return nil, fmt.Errorf("session: unknown provide %q (forgotten import?)", provideName) } - return &Manager{provider: provider, cookieName: cookieName, maxlifetime: maxlifetime}, nil + return &Manager{provider: provider, cookieName: cookieName, maxLifeTime: maxLifeTime}, nil } ``` @@ -128,7 +128,7 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se if err != nil || cookie.Value == "" { sid := manager.sessionId() session, _ = manager.provider.SessionInit(sid) - cookie := http.Cookie{Name: manager.cookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, MaxAge: int(manager.maxlifetime)} + cookie := http.Cookie{Name: manager.cookieName, Value: url.QueryEscape(sid), Path: "/", HttpOnly: true, MaxAge: int(manager.maxLifeTime)} http.SetCookie(w, &cookie) } else { sid, _ := url.QueryUnescape(cookie.Value) @@ -214,8 +214,8 @@ func init() { func (manager *Manager) GC() { manager.lock.Lock() defer manager.lock.Unlock() - manager.provider.SessionGC(manager.maxlifetime) - time.AfterFunc(time.Duration(manager.maxlifetime), func() { manager.GC() }) + manager.provider.SessionGC(manager.maxLifeTime) + time.AfterFunc(time.Duration(manager.maxLifeTime), func() { manager.GC() }) } ``` 我们可以看到GC充分利用了time包中的定时器功能,当超时`maxLifeTime`之后调用GC函数,这样就可以保证`maxLifeTime`时间内的session都是可用的,类似的方案也可以用于统计在线用户数之类的。