aggiunta l'opzione DEBUG; log meno verboso.
This commit is contained in:
parent
28521afda2
commit
6d2901027e
1 changed files with 34 additions and 14 deletions
40
main.go
40
main.go
|
@ -18,11 +18,13 @@ type Options struct {
|
|||
CurrentPath string
|
||||
Exe string
|
||||
LogFile string
|
||||
Timeout bool
|
||||
Debug bool
|
||||
Version bool
|
||||
}
|
||||
|
||||
const (
|
||||
_VERSION = "v1.1.4"
|
||||
_VERSION = "v1.2.1"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -30,10 +32,13 @@ var (
|
|||
RedisTTL: time.Hour * 11688, // 16 mesi
|
||||
LogFile: "log/llmongo.log",
|
||||
}
|
||||
|
||||
loop = true
|
||||
ttl = time.Second * 55
|
||||
)
|
||||
|
||||
func usage() {
|
||||
fmt.Println("Usage: llmongo -m <mongo uri> -r <redis uri> -t <ttl> -l <logfile> -v\n")
|
||||
fmt.Println("Usage: llmongo -m <mongo uri> -r <redis uri> -t <ttl> -l <logfile> -T -D -v\n")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
|
@ -53,6 +58,12 @@ func init() {
|
|||
flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename")
|
||||
flag.DurationVar(&opts.RedisTTL, "t", opts.RedisTTL, "Redis TTL")
|
||||
flag.BoolVar(&opts.Version, "v", false, "Version")
|
||||
flag.BoolVar(&opts.Timeout, "T", false, "Timeout")
|
||||
flag.BoolVar(&opts.Debug, "D", false, "Debug")
|
||||
}
|
||||
|
||||
func stopLoop() {
|
||||
loop = false
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
@ -86,12 +97,19 @@ func main() {
|
|||
dbs.connectMongo()
|
||||
defer dbs.mdb.Close()
|
||||
|
||||
if opts.Timeout {
|
||||
time.AfterFunc(ttl, stopLoop)
|
||||
}
|
||||
|
||||
count := 0
|
||||
for {
|
||||
errCount := 0
|
||||
for loop {
|
||||
// estrae un userid dalla lista degli utenti che hanno fatto login
|
||||
spop := dbs.rdb.Cmd("spop", "llindex")
|
||||
user, err := spop.Str()
|
||||
if opts.Debug {
|
||||
log.Printf("SPOP: %+v %+v\n", spop, user)
|
||||
}
|
||||
// se non ci sono piu' userid esce
|
||||
if err != nil {
|
||||
log.Printf("LLINDEX empty: %v\n", err)
|
||||
|
@ -103,14 +121,18 @@ func main() {
|
|||
// Estrae l'ultimo login dell'utente 'user'
|
||||
val, err = dbs.rdb.Cmd("lindex", user, "-1").Str()
|
||||
if err != nil {
|
||||
if opts.Debug {
|
||||
log.Printf("LINDEX error: %+v\n", err)
|
||||
}
|
||||
// se ha trovato user e righe di login
|
||||
if lastval != "" {
|
||||
// reinserisce l'ultimo login e imposta il ttl su Redis
|
||||
retval := dbs.rdb.Cmd("lpush", user, lastval)
|
||||
ttl := dbs.rdb.Cmd("expire", user, opts.RedisTTL.Seconds())
|
||||
if opts.Debug {
|
||||
log.Println("LPUSH retval: ", retval, ttl, user, lastval, opts.RedisTTL.Seconds())
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
// se la riga di login e' vuota
|
||||
|
@ -140,11 +162,6 @@ func main() {
|
|||
Ip: sval[2],
|
||||
Date: time.Unix(date, 0),
|
||||
}
|
||||
// ul := UserLogin{
|
||||
// User: user,
|
||||
// Date: time.Unix(date, 0),
|
||||
// Lock: false,
|
||||
// }
|
||||
ind := Index{
|
||||
User: user,
|
||||
Date: time.Unix(date, 0),
|
||||
|
@ -156,6 +173,7 @@ func main() {
|
|||
log.Printf("Insert error: %+v\n", err)
|
||||
// se l'errore non e' "duplicate key error" salta al prossimo senza cancellare niente
|
||||
if !strings.Contains(err.Error(), "E11000") {
|
||||
errCount += 1
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
@ -163,11 +181,13 @@ func main() {
|
|||
// _ err := dbs.us.Upsert(ind, ul)
|
||||
// cancella da Redis la riga di login inserita
|
||||
retval := dbs.rdb.Cmd("lrem", user, "-1", val)
|
||||
if opts.Debug {
|
||||
log.Println("LREM retval: ", retval, user, val)
|
||||
}
|
||||
lastval = val
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Printf("Stop %v - %d\n", time.Since(start), count)
|
||||
log.Printf("Stop %v - %d\n", time.Since(start), count)
|
||||
fmt.Printf("Stop %v - login: %d - errors: %d\n\r", time.Since(start), count, errCount)
|
||||
log.Printf("Stop %v - login: %d - errors: %d\n\r", time.Since(start), count, errCount)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue