d39954c9 by slene

Merge branch 'master' of github.com:astaxie/beego

2 parents 89c03870 d835b0c8
...@@ -185,7 +185,7 @@ func ParseConfig() (err error) { ...@@ -185,7 +185,7 @@ func ParseConfig() (err error) {
185 } 185 }
186 sds := strings.Fields(sd) 186 sds := strings.Fields(sd)
187 for _, v := range sds { 187 for _, v := range sds {
188 if url2fsmap := strings.SplitN(v, ":", 2); url2fsmap[1] != "" { 188 if url2fsmap := strings.SplitN(v, ":", 2); len(url2fsmap) == 2 {
189 StaticDir["/"+url2fsmap[0]] = url2fsmap[1] 189 StaticDir["/"+url2fsmap[0]] = url2fsmap[1]
190 } else { 190 } else {
191 StaticDir["/"+url2fsmap[0]] = url2fsmap[0] 191 StaticDir["/"+url2fsmap[0]] = url2fsmap[0]
......
...@@ -2,6 +2,7 @@ package session ...@@ -2,6 +2,7 @@ package session
2 2
3 import ( 3 import (
4 "errors" 4 "errors"
5 "fmt"
5 "io" 6 "io"
6 "io/ioutil" 7 "io/ioutil"
7 "os" 8 "os"
...@@ -131,6 +132,18 @@ func (fp *FileProvider) SessionGC() { ...@@ -131,6 +132,18 @@ func (fp *FileProvider) SessionGC() {
131 filepath.Walk(fp.savePath, gcpath) 132 filepath.Walk(fp.savePath, gcpath)
132 } 133 }
133 134
135 func (fp *FileProvider) SessionAll() int {
136 a := &activeSession{}
137 err := filepath.Walk(fp.savePath, func(path string, f os.FileInfo, err error) error {
138 return a.visit(path, f, err)
139 })
140 if err != nil {
141 fmt.Printf("filepath.Walk() returned %v\n", err)
142 return 0
143 }
144 return a.total
145 }
146
134 func (fp *FileProvider) SessionRegenerate(oldsid, sid string) (SessionStore, error) { 147 func (fp *FileProvider) SessionRegenerate(oldsid, sid string) (SessionStore, error) {
135 err := os.MkdirAll(path.Join(fp.savePath, string(oldsid[0]), string(oldsid[1])), 0777) 148 err := os.MkdirAll(path.Join(fp.savePath, string(oldsid[0]), string(oldsid[1])), 0777)
136 if err != nil { 149 if err != nil {
...@@ -193,6 +206,21 @@ func gcpath(path string, info os.FileInfo, err error) error { ...@@ -193,6 +206,21 @@ func gcpath(path string, info os.FileInfo, err error) error {
193 return nil 206 return nil
194 } 207 }
195 208
209 type activeSession struct {
210 total int
211 }
212
213 func (self *activeSession) visit(paths string, f os.FileInfo, err error) error {
214 if err != nil {
215 return err
216 }
217 if f.IsDir() {
218 return nil
219 }
220 self.total = self.total + 1
221 return nil
222 }
223
196 func init() { 224 func init() {
197 Register("file", filepder) 225 Register("file", filepder)
198 } 226 }
......
...@@ -142,6 +142,10 @@ func (pder *MemProvider) SessionGC() { ...@@ -142,6 +142,10 @@ func (pder *MemProvider) SessionGC() {
142 pder.lock.RUnlock() 142 pder.lock.RUnlock()
143 } 143 }
144 144
145 func (pder *MemProvider) SessionAll() int {
146 return pder.list.Len()
147 }
148
145 func (pder *MemProvider) SessionUpdate(sid string) error { 149 func (pder *MemProvider) SessionUpdate(sid string) error {
146 pder.lock.Lock() 150 pder.lock.Lock()
147 defer pder.lock.Unlock() 151 defer pder.lock.Unlock()
......
...@@ -152,6 +152,17 @@ func (mp *MysqlProvider) SessionGC() { ...@@ -152,6 +152,17 @@ func (mp *MysqlProvider) SessionGC() {
152 return 152 return
153 } 153 }
154 154
155 func (mp *MysqlProvider) SessionAll() int {
156 c := mp.connectInit()
157 defer c.Close()
158 var total int
159 err := c.QueryRow("SELECT count(*) as num from session").Scan(&total)
160 if err != nil {
161 return 0
162 }
163 return total
164 }
165
155 func init() { 166 func init() {
156 Register("mysql", mysqlpder) 167 Register("mysql", mysqlpder)
157 } 168 }
......
...@@ -128,6 +128,12 @@ func (rp *RedisProvider) SessionGC() { ...@@ -128,6 +128,12 @@ func (rp *RedisProvider) SessionGC() {
128 return 128 return
129 } 129 }
130 130
131 //@todo
132 func (rp *RedisProvider) SessionAll() int {
133
134 return 0
135 }
136
131 func init() { 137 func init() {
132 Register("redis", redispder) 138 Register("redis", redispder)
133 } 139 }
......
...@@ -27,6 +27,7 @@ type Provider interface { ...@@ -27,6 +27,7 @@ type Provider interface {
27 SessionRead(sid string) (SessionStore, error) 27 SessionRead(sid string) (SessionStore, error)
28 SessionRegenerate(oldsid, sid string) (SessionStore, error) 28 SessionRegenerate(oldsid, sid string) (SessionStore, error)
29 SessionDestroy(sid string) error 29 SessionDestroy(sid string) error
30 SessionAll() int //get all active session
30 SessionGC() 31 SessionGC()
31 } 32 }
32 33
...@@ -195,6 +196,10 @@ func (manager *Manager) SessionRegenerateId(w http.ResponseWriter, r *http.Reque ...@@ -195,6 +196,10 @@ func (manager *Manager) SessionRegenerateId(w http.ResponseWriter, r *http.Reque
195 return 196 return
196 } 197 }
197 198
199 func (manager *Manager) GetActiveSession() int {
200 return manager.provider.SessionAll()
201 }
202
198 //remote_addr cruunixnano randdata 203 //remote_addr cruunixnano randdata
199 204
200 func (manager *Manager) sessionId(r *http.Request) (sid string) { 205 func (manager *Manager) sessionId(r *http.Request) (sid string) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!