estrae uno user per volta con SPOP

This commit is contained in:
Michele Fadda 2015-07-29 09:13:49 +02:00
parent 0a9899cc80
commit 97e7801f0f

View file

@ -40,7 +40,7 @@ type Index struct {
} }
const ( const (
_VERSION = "v1.0.2" _VERSION = "v1.1.0"
) )
var ( var (
@ -123,15 +123,26 @@ func main() {
connectMongo() connectMongo()
defer opts.mdb.Close() defer opts.mdb.Close()
// Estrae la lista degli utenti che hanno fatto login negli ultimi X min. // // Estrae la lista degli utenti che hanno fatto login negli ultimi X min.
llindex := opts.rdb.Cmd("smembers", "llindex") // llindex := opts.rdb.Cmd("smembers", "llindex")
lista, err := llindex.List() // lista, err := llindex.List()
if err != nil { // if err != nil {
log.Panicln("LLINDEX error: ", err.Error()) // log.Panicln("LLINDEX error: ", err.Error())
} // }
// // for _, user := range lista {
// // cicla fino a che esistono righe di login
for _, user := range lista { for {
// cicla fino a che esistono righe di login // estrae un userid dalla lista degli utenti che hanno fatto login
spop := opts.rdb.Cmd("spop", "llindex")
user, err := spop.Str()
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)
break
}
// user := spop.String()
var date int64 var date int64
var lastval, val string var lastval, val string
for { for {
@ -163,6 +174,7 @@ func main() {
log.Println("LREM retval: ", user, val, retval) log.Println("LREM retval: ", user, val, retval)
continue continue
} }
// se il timestamp della riga di login non e' corretto
date, err = strconv.ParseInt(sval[1], 10, 64) date, err = strconv.ParseInt(sval[1], 10, 64)
if err != nil { if err != nil {
log.Printf("Date Error: %+v - %s\n", err, user) log.Printf("Date Error: %+v - %s\n", err, user)
@ -193,12 +205,14 @@ func main() {
lastval = val lastval = val
} }
// controlla se ci sono ancora line di login per l'utente 'user' // controlla se ci sono ancora line di login per l'utente 'user'
/*
llen, _ := opts.rdb.Cmd("llen", user).Int64() llen, _ := opts.rdb.Cmd("llen", user).Int64()
if llen <= 1 { if llen <= 1 {
// elimina l'utente dalla lista di quelli che hanno fatto login se ci sono 1 o meno // elimina l'utente dalla lista di quelli che hanno fatto login se ci sono 1 o meno
retval := opts.rdb.Cmd("srem", "llindex", user) retval := opts.rdb.Cmd("srem", "llindex", user)
log.Println("SREM retval: ", retval, user) log.Println("SREM retval: ", retval, user)
} }
*/
} }
fmt.Printf("Stop %v\n", time.Since(start)) fmt.Printf("Stop %v\n", time.Since(start))