Maison >base de données >tutoriel mysql >Comment déterminer le statut en ligne de l'utilisateur en temps réel à l'aide de PHP et MySQL : un guide complet.
Comment déterminer le statut en ligne d'un utilisateur avec des sessions et MySQL
Déterminer si un utilisateur est en ligne en temps réel est crucial pour diverses applications. Bien que l'utilisation de sessions à cette fin soit une approche courante, elle nécessite de trouver une solution optimale qui suit avec précision l'activité des utilisateurs sans s'appuyer sur des seuils temporels.
Une façon d'y parvenir consiste à exploiter le champ lastActiveTime dans le fichier Utilisateurs. tableau. Ce champ peut être mis à jour chaque fois qu'un utilisateur accède à une page. En interrogeant périodiquement la table pour les utilisateurs avec un lastActiveTime mis à jour dans un laps de temps spécifique (par exemple, les 5 dernières minutes), vous pouvez déterminer qui est actuellement en ligne.
Par exemple, en utilisant la fonction NOW() de MySQL pour récupérer le serveur -side time garantit la cohérence entre les fuseaux horaires :
<?php $query = "SELECT COUNT(*) AS online_count FROM Users WHERE lastActiveTime >= NOW() - INTERVAL 5 MINUTE"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_assoc($result); $onlineCount = $row['online_count']; ?>
Cependant, pour suivre l'activité continue des utilisateurs, envisagez d'implémenter JavaScript pour envoyer une requête ping au serveur à intervalles réguliers, par exemple toutes les 60 secondes. De cette façon, les utilisateurs sont marqués comme étant en ligne même s'ils ne naviguent pas activement sur le site.
Voici un extrait de code JavaScript mis à jour utilisant fetch et promises :
<code class="js">(async function ping() { try { await fetch("stillAlive.php"); } catch (error) { console.error(error); } setTimeout(ping, 60_000); }());</code>
En tirant parti des sessions et du Le champ lastActiveTime, combiné à un mécanisme de ping JavaScript, vous permet de déterminer efficacement le statut en ligne de l'utilisateur dans PHP et MySQL sans vous fier à des critères temporels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!