Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quel est le moyen le plus simple de déterminer si un utilisateur est en ligne ? (PHP/MYSQL)

Ne vous embêtez pas à déterminer les différences entre les fuseaux horaires. Ce n'est pas nécessaire.

Chaque fois que l'utilisateur accède à une page, mettez à jour un champ dans son enregistrement de la table Users last-updated-time. Effectuez ensuite une requête pour tous les utilisateurs ayant une heure de dernière mise à jour au cours des 5 dernières minutes. Rien de plus que cela, et ils sont considérés comme "hors ligne".

Si vous utilisez l'heure de votre serveur, via la fonction NOW() de MySQL, vous éviterez de calculer les différences entre les fuseaux horaires.

Il s'agit de la méthode standard de suivi du nombre d'utilisateurs actuellement en ligne (c'est-à-dire actifs au cours des deux dernières minutes).

Constamment mis à jour

Si vous souhaitez savoir qu'ils sont toujours actifs même lorsqu'ils ne sautent pas de page en page, incluez un peu de javascript pour envoyer un ping à votre serveur toutes les 60 secondes environ pour vous faire savoir qu'ils sont toujours en vie. Cela fonctionnera de la même manière que ma suggestion initiale, mais cela mettra à jour vos enregistrements sans les obliger à parcourir frénétiquement votre site au moins une fois toutes les cinq minutes.

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