webForumDet fria alternativet

Optimering av radering

5 svar · 217 visningar · startad av joakimweb

joakimwebMedlem sedan feb. 2002141 inlägg
#1

Hej!

Jag har ett onlinescript utan global.asa där tabell i MySQL-databas utnyttjas (MySQL 4.x).

Efter 10 minuters inaktivitet är det tänkt att ip-numren skall raderas utav andra användare. Scriptet går vid varje sidladdning och uppdaterar även sidan man är på.

Istället för att jag nu loopar genom alla poster och kontrollerar med DateDiff borde det gå att skrivas i en SQL-fråga. Frågan är bara hur man gör det.

stat_online
Id | Int
IP | varchar
tid | datetime

Alltså kontrollera datetime om det är > 10 min inaktivitet.

Tacksam för all hjälp!

PeddaMedlem sedan juni 20006 032 inlägg
#2

Så här har jag gjort i mitt online script.
Det är ju förvisso i php, men du förstår nog funktionen.

// Delete entries older than timeout_online seconds and any duplicates (start transaction)
$query = ('DELETE FROM online WHERE logged<'.($now-300).' OR ident=\''.addslashes($cookie['username']).'\' OR ident=\''.get_remote_address().'\'');
joakimwebMedlem sedan feb. 2002141 inlägg
#3

Nja, ".($now-300)." blir svår att ersätta med ASP :/

PeddaMedlem sedan juni 20006 032 inlägg
#4

Jag kan ju inte asp så...

Men $now är en tidsstämpel, borde väl finnas i asp med, sen minus 300 sek.

HardrockerMedlem sedan nov. 2003310 inlägg
#5

Använd DateAdd för lägga till och tabort tid från ett datum.

DateAdd("s", -300, now) är ASPs motsvarig till PHPs ($now-300).

obs att det är "n" man ska använda för minuter, m är månader.

/Ante S

joakimwebMedlem sedan feb. 2002141 inlägg
#6

japp, testkörde precis med DateAdd("n", -10, now) och det funkade.

Tack för hjälpen alla

129 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)