diff --git a/appServer/test_redis.php b/appServer/test_redis.php index aae6905..ba434ac 100644 --- a/appServer/test_redis.php +++ b/appServer/test_redis.php @@ -5,7 +5,7 @@ Testing procedure Redis per EQN... require 'redis.php'; function redis_error($error) { - throw new error($error); +// throw new error($error); } $redis = new redis_cli (); @@ -18,45 +18,75 @@ echo "Server inizializzato, proseguono test
"; # VALORI DI CONFIGURAZIONE (portare su file ext!!!) #------------------------------------------------------ # ScoreList Posizioni +$semaforo = "EQN:USERS:SEMAPHORE"; $tblPos = "EQN:USERS:POS"; $tblLast= "EQN:USERS:UPD"; -# timeout (x semaforo) della gestione update POSIZIONI sul DB (cancello vecchi, inserisco nuovi): 1 min (poi 5?) -$tOutPos2Db = 1; +# timeout (x semaforo) IN SECONDI x gestione update POSIZIONI sul DB (cancello vecchi, inserisco nuovi): 1 min (poi 5?) +$tOutSemaforo = 30; # età massima dei valori a sistema (2 minuti, in prod 30!!!) $maxAgePos = 1; # num record da processare in blocco $nBlockRec = 10; +# controllo se serve cleanUp +$doClean=0; # definizione funzioni helper x gestione REDIS dell'oggetto (UserID = numero, DTime in intero fino ai minuti yyMMddHHmm) + +# Salva posizione utente function salvaPosizione($redis, $tblPos, $tblLast, $User_ID, $Lat, $Lon, $DTime) { # salvo dataora verifica $redis->cmd('ZADD', $tblLast, $DTime, $User_ID ) // # salvo posizione Geolocalizzata - ->cmd('GEOADD',$tblPos, $Lat, $Lon, $User_ID ) + ->cmd('GEOADD',$tblPos, $Lon, $Lat, $User_ID ) ->set(); } +# Verifica SE ci sia semaforo rosso oppure se sia necessario a fine programma fare cleanUp +function checkSemaforo($redis, $semaforo, $tOutSemaforo) { + // verifico semaforo... + $answ=$redis->cmd('EXISTS', $semaforo )->get(); + // se NON c'è lo creo + #echo "check semaforo: answ: ".$answ; + if($answ==0) + { + $redis->cmd('SET', $semaforo, date("YmdHi")) + ->cmd('EXPIRE', $semaforo, $tOutSemaforo) + ->set(); + } + return $answ; +} + +function cleanUp($redis, $tblPos, $tblLast, $DTime) { + // chiamo IN BLOCCO calcellazione dati vecchi (prima GEO e poi DTime) + + // cerco i dati NUOVI (per DB) da persistere su DB $nBlockRec alla volta... +} # Genero un UID univoco con nome server (numerico) + numero casuale $server = gethostname(); $uID = substr($server, 2, 2).rand(0,999999999); # genero coordinate casuali LAT/LON -$cLat = rand(-85,85); -$cLon = rand(-180,180); +$cLat = rand(-80,80); +$cLon = rand(-170,170); $currDT = date("YmdHi"); -echo"Valore | uID: ".$uID." | LAT: ".$cLat." | LON: ".$cLon." | DT: ".$currDT; - -salvaPosizione($redis, $tblPos, $tblLast, $uID, $cLat, $cLon, $currDT); +# in primis check semaforo SE debba fare pulizia +$doClean=checkSemaforo($redis, $semaforo, $tOutSemaforo); # effettuo update informazione posizione dell'utente (insert/update) +salvaPosizione($redis, $tblPos, $tblLast, $uID, $cLat, $cLon, $currDT); + +echo"Valore salvato uID: ".$uID." | LAT: ".$cLat." | LON: ".$cLon." | DT: ".$currDT; +echo "
"; # verifico semaforo $tOutPos2Db (se devo svuotare e aggiornare DB da redis) +$maxDT = date("YmdHi"); +cleanUp($redis, $tblPos, $tblLast, $maxDT); # mostro infine count record rimasti!!! - ?> +