Maitriser la connexion d'un membre

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics

passion
WRInaute accro
WRInaute accro
 
Messages: 3107
Inscription: 6 Jan 2006

Maitriser la connexion d'un membre

Message le Jeu Déc 11, 2008 22:19

Bonjour,

Ayant développé une application nécessitant la connexion par identifiants, j'ai mis à dispo un lien de déconnexion pour connaitre si un membre est connecté ou non sur le site mais mon problème majeur est si celui-ci clique sur la croix de son navigateur !

Connaissez-vous une astuce permettant de savoir si le membre quitte le site en cliquant sur la croix de son navigateur?

Merci de votre aide! :wink:


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Jeu Déc 11, 2008 23:25

inactivité au bout de x minutes.... t'as aucun autre choix

passion
WRInaute accro
WRInaute accro
 
Messages: 3107
Inscription: 6 Jan 2006

Message le Jeu Déc 11, 2008 23:48

en fouillant les entrailles du web, il serait question de l'aide du JS (onUnLoad) pour pouvoir supprimer la session en cours et effectuer la mise à jour sur ma table connexion...

Mais il semblerait que des problèmes perdurent :
désactivation du JS, interprétation différentes sur les navigateurs, etc...

Prise de tête ! :evil:

inactivité au bout de x minutes....

oui c'est aussi en place mais cela n'empêche mon internaute de fermer via la croix et me laisser en plan... ou alors, je dois aussi faire une tache cron qui va tester les connexions supérieur à la date actuelle et les supprimer mais bonjour, les ressources utilisées pour ce truc.

Mais comme c'est pour un client qui tient à être le + proche possible de l'instant T, il donne à + ou - 3 min d'intervalle pour connaitre si internaute connecté ou non !


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Message le Ven Déc 12, 2008 1:07

1-
Le meilleur moyen c'est à chaque chargement de page de vérifier en session la dernière fois qu'il a envoyé son status. Dès que tu dépasse 1min, tu envois une mise à jour dans ta BDD sur le champ "dernière activité" et avec un cron toutes les 3 min tu check tout.
Comme cela au pire tu as un UPDATE toutes les minutes par user + un cron toutes les 3min sur un critère super sélectif de date ... donc je pense pas que cela te pourrisse ton serveur ... où alors faut acheter plus gros.

2-
Tu peux sinon faire appel à des services externes qui font de même. La différence est que c'est eux qui stoque l'info. Toutes les 3min tu vas checker un lien qui te renvoi les nouveaux users en ligne et ceux qui viennent de partir.

Pour l'avoir utilisé sur un gros site, c'est pas super fiable ... il reste souvent des gens connecté 24h/24...

Je te conseille la façon manuelle ... malheureusement.

3-
En plus ton problème de js : si qqn quitte le processus du navigateur / reboot en hard son ordi > ça m'étonnerais que ton js dise qqch !!!


EDIT : lien pour le point 2 : "userplane" ... mais je déconseille.

passion
WRInaute accro
WRInaute accro
 
Messages: 3107
Inscription: 6 Jan 2006

Message le Ven Déc 12, 2008 9:59

ok merci de vos retours :)

Je vais mettre en place un cron à période de 3 min

mais mon prob se déplace car le membre qui peut être au tél, boire un verre, etc... bah... déconnexion auto !

C'est pas optimisé ! 8O


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Message le Ven Déc 12, 2008 10:07

screuscreu a écrit:1-
Le meilleur moyen c'est à chaque chargement de page de vérifier en session la dernière fois qu'il a envoyé son status. Dès que tu dépasse 1min, tu envois une mise à jour dans ta BDD sur le champ "dernière activité" et avec un cron toutes les 3 min tu check tout.
Comme cela au pire tu as un UPDATE toutes les minutes par user + un cron toutes les 3min sur un critère super sélectif de date ... donc je pense pas que cela te pourrisse ton serveur ... où alors faut acheter plus gros.


j'ai pas trop compris cette solution ...

pour rebondir sur le sujet j'ai un souci proche sur une webapplication, je voudrais interdire les accès concurrents : quand dupond ouvre une fiche client, alors je voudrais interdire a michel d'accéder à la même fiche, ou plutôt lui interdire de modifier cette fiche

comment savoir quand une fiche est ouverte chez quelqu'un, en prenant en compte, les fiches qu'on oublie de fermer à la fermeture de session automatique au bout de 30 min, en prenant en compte aussi les fermetures de navigateur


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Message le Ven Déc 12, 2008 10:18

Je vais tenter de clarifier.

:arrow: Principe de base :
A chaque chargement de page de l'utilisateur 3 (son id), on fait un :
Code: Tout sélectionner
UPDATE users SET last_coucou = NOW(), online = 1 WHERE id = 3


Toutes les 3 min on fait ça par un script Cron
Code: Tout sélectionner
UPDATE users SET online = 0 WHERE last_coucou < NOW() -3min



:arrow: Optimisation
Pour éviter d'accéder à la base à chaque chargement de page ... ce qui peut être toutes les 10s si l'utilisateur cherche de l'info, on met en place un system de Session (ou Cookie au choix)
A chaque chargement de page :
Code: Tout sélectionner
if (Session.last_coucou == null ||Session.last_coucou < NOW()-1min ){
    UPDATE users SET last_coucou = NOW(), online = 1 WHERE id = 3
    Session.last_coucou  = NOW()
}else{
    //RIEN
}

Ce qui fait que l'on met à jour la BDD que toutes les 1min au max ... gain énorme pour des cliqueurs fous

Pareil pour le CRON


J'espère avoir été plus clair

passion
WRInaute accro
WRInaute accro
 
Messages: 3107
Inscription: 6 Jan 2006

Message le Ven Déc 12, 2008 10:32

ok merci d'être explicite dans tes explications mais en faite, le site en question est un chat webcam donc les connexions peuvent être longues.

Biensur tant que le user se manifeste, y'a pas de prob !

Mais il peut très bien vouloir rester connecté sans bouger et là, c'est le prob de mise à jour à 3 min !!


rudddy
WRInaute accro
WRInaute accro
 
Messages: 2570
Inscription: 1 Aoû 2007

Message le Ven Déc 12, 2008 10:34

ok mais ce n'est pas vraiment exact, car si mon conseiller reste 10 minutes en lignes avec le client, il faut faire le cron toutes les 10 minutes, c'est aps hyper hyper précis.

mais ça peut aider

merci du tuyau


screuscreu
WRInaute impliqué
WRInaute impliqué
 
Messages: 968
Inscription: 14 Jan 2008

Message le Ven Déc 12, 2008 10:34

Tu as aucune interaction avec l'interface avec ton chat ?
tu peux pas envoyer une petite requête ajax comme si de rien n'était pendant qu'il fait des trucs de chat ?

passion
WRInaute accro
WRInaute accro
 
Messages: 3107
Inscription: 6 Jan 2006

Message le Ven Déc 12, 2008 11:14

en faite, le chat va être en flash et j'ai cru comprendre que via flash, tu pouvais justement préciser quand ton user ferme la fenêtre de l'application.

mais ensuite, pour reprendre l'architecture HTML, je reprendrais mon traitement via cron et script php intégré dans les pages internes.

Je crois que là, je devrais être carré :)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités