sql >> Databasteknik >  >> RDS >> Mysql

Vad är det enklaste sättet att avgöra om en användare är online? (PHP/MYSQL)

Bry dig inte om att ta reda på skillnaderna mellan tidszoner. Det är inte nödvändigt.

Närhelst användaren kommer åt en sida, uppdatera ett fält i sin post i tabellen Användare senast uppdaterad-tid. Gör sedan en fråga för alla användare som har en senaste uppdateringstid under de senaste 5 minuterna. Allt mer än detta, och de anses vara "offline."

Om du använder din server-tid, via NOW()-funktionen i MySQL, kommer du att gå i sidled med att beräkna skillnader mellan tidszoner.

Detta är standardsättet för att spåra hur många användare som för närvarande är online (vilket betyder, aktiva inom de senaste minuterna).

Uppdateras ständigt

Om du vill veta att de fortfarande är aktiva även när de inte hoppar från sida till sida, inkludera lite javascript för att pinga din server var 60:e sekund eller så för att låta dig veta att de fortfarande lever. Det kommer att fungera på samma sätt som mitt ursprungliga förslag, men det kommer att uppdatera dina uppgifter utan att kräva att de frenetiskt surfar på din webbplats minst en gång var femte minut.

var stillAlive = setInterval(function () {
    /* XHR back to server
       Example uses jQuery */
    $.get("stillAlive.php");
}, 60000);


  1. Anpassad fråga paginering Cakephp

  2. Hur man filtrerar datum med datetimepicker via databas

  3. FORCE INDEX i MySQL - var ska jag lägga det?

  4. Villkorligt JOIN-uttalande SQL Server