29-04-2016, 03:15 PM
(29-04-2016, 03:08 PM)Xenos a écrit : id_joueur INT | session_hash BINARY | last_activity DATETIME
Et tu INSERT ON DUPLICATE KEY UPDATE dans cette table le n° du joueur, le HASH de sa session (ben oui, le n° de session, c'est un mot de passe, temporaire, et stocké en clair, ce n'est pas très propre) ainsi que NOW()
Après, tu n'as plus qu'à récupérer les lignes de cette tables "suffisamment récentes" (à toi de choisir un délais cohérent avec le jeu: 5 min? 15 min? etc) pour savoir qui est connecté.
Oublie le message sur la croix du navigateur, c'est de la merde ergonomique en barre.
La durée de péremption de la session ne changera rien car il s'agit de session PHP, gérées par PHP: si le mec n'est pas connecté, la session n'expirera pas toute seule (et même si elle expire, aka si le fichier des données de la session était supprimé, tu n'as pas de notification pour le sauver en BDD).
Je pense avoir compris, ce que tu veux dire, c'est que pour savoir le nombre de connectés sur mon portail, je ne vais pas chercher à mettre un flag "connecté"/"pas connecté" à chaque fois que quelqu'un se connecte déconnecte.
Ce que tu me dit c'est que je devrais inscrire dans ma BDD la date actuelle, chaque fois que l'utilisateur effectue une action ?
Ainsi, si je veux savoir le nombre de personne en ligne je n'ai qu'à récupéré le count des utilisateur avec une date actuelle - date en bdd < 15 minutes par exemple ? (signifie le nombre de joueur ayant fait une action il y as moins de 5 minutes) ?
mais n'est-ce pas coûteux pour la BDD de subir pour chaque joueur, pour chaque action un UPDATE ?