Hejsan!
Jag joibbarp å en portal och jag har haft ett flertal lösningar på hur jag ska göra en method som visar antalet användare som är online och också Vilka som är online...
Användarna loggar in och en sessions skapas för användaren.
Vad är det bästa sättet för att visa om man är online eller offline på?
Någon som har förslag?
Mja, varje gång en användare loggar in kan du ju uppdatera den spesifika användarens Status till "Online" och när personen loggar ut uppdaterar du den till "Offline"...
Sen om folk inte loggar ut kan du lösa det med att kontinuerligt (varje gång någon uppdaterar sidan) logga ut personer som inte varit aktiva från och med 30 minuter tillbaka eller dylikt.
Fixa alltså en datetime kolumn i databasen som uppdateras varje gång användaren uppdaterar sidan.
en tabell med timestamp, användare etc...
när användaren surfar runt på sidan så uppdateras timestampen och senaste timestap hämtas. när användaren har slutat surfa runt på sidan så dör timestampen efter X antal sekunder.
jag tänkte mer att jag skapar två nya fält i "user" tabellen...
status och status_time
när man loggar in sätts status till 1 och så sätter man status_Time till datumet och tiden som det var
sen gör man en funktion som alla användare gör när de surfar runt på sidan, som kollar alla användar fält i databasen där status är 1 och så kollar den om status_time är äldre än 20 min och i sånna fall sätts status till 0 också...
på så sätt så kan man väl räkna alla som är inloggade lätt och man får också ett sätt att kolla vilka användare som är inloggade..
det dåliga med det är väl att det blir söligt att kolla igneom databasen varje gång någon uppdaterar sidan...
jag tänkte mer att jag skapar två nya fält i "user" tabellen...
status och status_time
när man loggar in sätts status till 1 och så sätter man status_Time till datumet och tiden som det var
sen gör man en funktion som alla användare gör när de surfar runt på sidan, som kollar alla användar fält i databasen där status är 1 och så kollar den om status_time är äldre än 20 min och i sånna fall sätts status till 0 också...
på så sätt så kan man väl räkna alla som är inloggade lätt och man får också ett sätt att kolla vilka användare som är inloggade..
det dåliga med det är väl att det blir söligt att kolla igneom databasen varje gång någon uppdaterar sidan...
en unix timestamp, time(); . det är ett mycket enkelt sätt att leka med tid matematiskt. =) iaf jag kan skriva ihop ett script som jag tror skulle fungera så fort jag kommer hem. just nu sitter jag @ plugget och drygar. =)
Kan ju visa lite av den koden jag använder för online som ett exempel. Utav detta så får jag ut vilka som är inloggade, hur många gäster och var alla är på sidan. Men ska man bara ha hur många som är online så kan man ju förenkla det en del.
$now = time();
// Radera äldre än timeout_online
$query = ('DELETE FROM online WHERE logged<'.($now-300).' OR ident=\''.addslashes($cookie['username']).'\' OR ident=\''.get_remote_address().'\'');
mysql_query($query);
// Lägg till en ny. username och user_id om inloggad; ip och user_id=0 annars, lägger även till sidans namn ($page) och eventuellt id ($mid=tråd id, eller liknande)
$sql = ('INSERT INTO online (user_id, ident, logged, page, mid) VALUES(\''.$user_id.'\', \''.$ident.'\', '.$now.', \''.$page.'\', \''.$mid.'\')');
mysql_query($sql);
Gammal tråd så jag kommer inte ihåg exakt hur jag använde koden. Men det var nog för att inte få dubletter, jag körde ju inte någon update om man var inloggad och bytte sida utan en ny insert istället. I vilket fall som helst så var det ju inte den smartaste lösningen. ;) :)
321 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25