EQN

Testing procedure Redis per EQN... connect("redis01"); $redis->set_error_function('redis_error'); 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) 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, $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(-80,80); $cLon = rand(-170,170); $currDT = date("YmdHi"); # 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!!! ?>