Guarda che in modo chiaro ti e' stato detto da Fabio e poi da me. Anche se il riferimento era allo script di boomboom.Originariamente inviato da mystica
Grazie ancora
nel frattempo però mi è venuto un dubbio:
il codice è:
if ((time()-$row['lastIn'])<$scadenza)
ma non si tratta di unità di misura diverse?
time() mi stampa una cosa tipo 1093679278 (ora attuale in secondi giusto?);
$row['lastIn'] mi dà 20040828094729 (secondi + data al contrario);
$scadenza 1200 (lo imposto io, sono secondi vero?)
quindi se faccio la sottrazione, il risultato ha senso?
O forse dovrei trasformare qualche dato?
Grazie!
![]()
Fabio suggeriva a boomboom (indirettamente a te) un timestamp unix invece di NOW(), invece io ho aggiunto la possibilita' di fare tutto nella query utilizzando solo le funzioni mysql.
Erano i racconti della serie " a buon intenditor poche parole"...
FabioSignifica:Questo invece secondo me va convertito con UNIX_TIMESTAMP
WHERE (ultimo_accesso+$set_timeout) > NOW()");
La mia osservazione:codice:WHERE (ultimo_accesso+$set_timeout) > UNIX_TIMESTAMP(NOW())");
Ora l'unica controversia sarebbe l'uso di "> maggiore" oppure "< minore".codice:Oppure se ultimo_accesso e' un campo datetime: WHERE (ultimo_accesso + interval $set_timeout minute) < NOW()");
Se vuoi estrarre tutti i record "scaduti" allora il confronto e': dove l'ultimo_accesso + il timeout e' minore di questo momento.
Se vuoi estrarre i record ancora validi ovviamente l'opposto.
Altra cosa degna di nota: Se un utente si collega senza concludere l'iter previsto, ti rimangono "orfani" tutti i record scaduti (timeout) o irraggiungibili per mancanza di session_id valido. Di qui la proposta di boomboom di cancellare non solo lo specifico session_id scaduto, ma bensi' "tutti" i session_id scaduti.
Chiedi pure se non ti e' chiaro il discorso.