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