Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
2074 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Compteur de temps de présence

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compteur de temps de présence

n°2333627
Furaxx
Posté le 16-05-2019 à 10:02:12  profilanswer
 

Bonjour,
 
J'ai une plateforme où j'aimerais avoir le temps de présence des personnes connectées, pour chaque connexion faites.
 
J'ai fait pour ça un compteur javascript qui:
- Lors de l'arrivée sur une page du site, lance en ajax un script PHP qui va chercher en BDD le temps déjà passé grâce à l'ID de session
- Toutes les 5s, un autre script PHP est lancé, mettant à jour l'enregistrement avec donc +5s de temps
 
Dans le principe ça fonctionne sans problème.
 
Ma question se trouve au niveau de "l'efficacité" de la chose. A savoir que ça fait faire un nombre de requêtes qui peut rapidement monter si j'ai plusieurs personnes connectées en même temps.
 
Bref, est-ce qu'il faut procéder de la sorte, ou bien y'a-t-il des méthodes bien meilleurs?
 
Merci!

mood
Publicité
Posté le 16-05-2019 à 10:02:12  profilanswer
 

n°2333634
mechkurt
Posté le 16-05-2019 à 14:29:55  profilanswer
 

En théorie, utiliser la méthode unload de la page serait tout aussi efficace et moins couteux pour le serveur, mais dans les faits, les scripts se contente souvent d'enregistrer chaque nouvelle page et d'en déduire le temps passé sur la page précédente...
Les 2 solutions loin d'être 100% fiable mais ce genre de prise de données ne doit, à mon avis, jamais brider la performance (que ce soit celle du serveur ou du client).


---------------
D3
n°2333635
Furaxx
Posté le 16-05-2019 à 15:36:51  profilanswer
 

C'est juste pour éviter de trop brider la performance serveur que je n'enregistre le temps que toutes les 5s (c'est suffisant pour l'utilité que ça a ensuite).
Je vais tester avec onload et unload pour voir si c'est efficace. Merci!

n°2333636
mechkurt
Posté le 16-05-2019 à 16:01:23  profilanswer
 

Le onload (tous les éléments chargé) sera toujours plus en retard que le onready (chargement du fichier html et DOM crée), lui même en retard sur une exécution javascript dans le head de la page...
Mais bon on parle millisecond sur une page de taille correct avec une bonne bande passante.
 
Pour le unload, j'utiliserais l'event beforeunload qui est très bien supporté.


---------------
D3
n°2333707
Furaxx
Posté le 19-05-2019 à 16:59:38  profilanswer
 

Merci beaucoup pour toutes ces informations, je n'ai pas encore eu le temps de tester mais il est certain que je vais l'utiliser dans mon projet.
 
Concernant les histoires de retard d'une fonction par rapport à une autre, actuellement j'enregistre toutes les 5s, alors c'est pas quelques ms qui vont me déranger, loin de là. :)

n°2333708
MaybeEijOr​Not
but someone at least
Posté le 19-05-2019 à 18:20:58  profilanswer
 

Moi je ferai tout par PHP.
Création d'une session lors de l'arrivée du visiteur, on y enregistre l'heure et la page demandée. Sur chaque nouvelle requête on enregistre l'heure et on déduit le temps passé sur la page précédente en vérifiant avec la variable globale $_SERVER['HTTP_REFERER'] que la nouvelle requête reçue provient bien de la page précédente.
On élimine les requêtes Ajax en les identifiant.

 

Les données du temps passé sur la dernière page seront faussées puisqu'elles ne seront pas enregistrées. Mais de toute manière elles seront toujours faussées, tu ne peux jamais vérifier si la personne n'a pas juste laissé son onglet ouvert.

 

La méthode uniquement par PHP permet de soulager le serveur et donnera un résultat approximatif mais quelque soit la méthode utilisée, le résultat restera approximatif.


Message édité par MaybeEijOrNot le 19-05-2019 à 18:21:35

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2333712
Furaxx
Posté le 20-05-2019 à 09:18:18  profilanswer
 

J'avais aussi pensé à cette méthode pendant un temps, mais sur certaines pages une personne peut rester connectée parfois 1-2h de temps, puis juste fermer son navigateur au lieu d'utiliser la fonction de déconnexion.
Du coup là on perd quand même toute la durée de toute dernière connexion, et donc sans être pile-poil comme il faut ça pourrait amener à une différence significative à la baisse.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Compteur de temps de présence

 

Sujets relatifs
Question temps de compilation, interprétationontroler la présence d'un fichier par son extension et sortir en code
[MySQL] temps fetching trop important[Python] Tableaux qui s'actualisent en même temps
Changement de logo selon le tempsUn compteur d'affichages avec base de données
Récupérer des informations matériel (% cpu, ...) En temps reelLanceur de requête SQL pour gain de temps en recette
Compteur année mois jours batch 
Plus de sujets relatifs à : Compteur de temps de présence


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR