iznobe2601
Messages postés26Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention16 juillet 2009
-
15 juin 2009 à 14:04
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015
-
17 juil. 2009 à 20:36
bonjour à tous ,
je vous explique mon soucis :
j ' ai un petit probleme d ' utilisation de la fonction clearinterval dans mon code .
j ' utilise un raffraichissement auto de ma shoutbox par l ' intermediare de XMLHttpRequest et set interval pour faire cela toutes les x secondes .
tout cela marche à merveille , mais le probleme est que certains membres oublie de fermer leur navigateur et consomme donc des ressources inutilement .
je voudrais donc pouvoir dire au navigateur du membre que au bout d' une heure il arrete de faire les mises àjour de la div .
d ' ou je pense qu ' il faut utiliser la fonction clear intervall .
maintenant voilà le code que j ' utilise pour actualiser la div :
var shoutbox_refresh;
function auto_refresh() {
/*active le refresh de la shoutbox toute les X secondes*/
shoutbox_refresh=setInterval(refresh(),120000);
}
j ' ai testé cela pour arreter mais ça ne marche pas apres plusieurs essais rien à faire .
var timer;
var test;
function stop_auto_refresh(duree) {
test=clearInterval(shoutbox_refresh);
duree==0?clearTimeout(timer):timer = setTimeout(test,duree);
}
j ' ai du loupé un truc mais je ne vois plus rien un peu d ' aide serait tres appreciée .
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 15 juin 2009 à 14:17
Bonjour,
t'as pensé à :
si le visiteur a fermé son navigateur ou s'il est parti vers un autre site :
ça n'existe plus !!, ton clearInterval est coté client !
tu sembles mélanger allègrement (?) setInterval et setTimeout....
pour l'un comme pour l'autre :
var timid=setTimeout ==> clearTimeout(timid)
var timid=setInterval ==> clearInterval(timid)
iznobe2601
Messages postés26Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention16 juillet 2009 15 juin 2009 à 14:24
je ne vois pas trop ce que tu veux dire par "tu sembles mélanger allègrement (?) setInterval et setTimeout...."
j ' utilise le settimeout pour me donner un delai d ' une heure et lancer le clear intervall afin de ne plus faire d' autorefresh.
je crois etre dans le vrai .
par contre si le membre ferme son navigateur tout cela continue sur mon serveur c' est ce que tu veux dire par
"t'as pensé à :
si le visiteur a fermé son navigateur ou s'il est parti vers un autre site :
ça n'existe plus !!, ton clearInterval est coté client !" ??
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 15 juin 2009 à 15:03
>>si le client n ' est plus connecté sur mon serveur le serveur ne continue
>>quand meme pas de lui envoyer les page
une fois à priori.... puisque coté client, le setTimeout ou setInterval est mort
>>shoutbox_refresh=setInterval(refresh(),120000);
t'es sur de la syntaxe ?
shoutbox_refresh=setInterval("refresh()",120000); ou
shoutbox_refresh=setInterval(refresh,120000);
>>duree==0?clearTimeout(timer):timer = setTimeout(test,duree);
t'es sur de ta syntaxe ?
je ne vois pas ce que tu veux faire ?
on fait "normalement" var variable = (test) ? 'si vrai' : 'si faux' ;
mais bon...
iznobe2601
Messages postés26Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention16 juillet 2009 15 juin 2009 à 15:24
il est vrai que pour la syntaxe il manque les "" .
shoutbox_refresh=setInterval("refresh()",120000); ceci est corrigé firebug me l ' avait signalé . merci quand meme .
et là en fait "duree==0?clearTimeout(timer):timer = setTimeout(test,duree);"
si ma variable durée est egale à 0 je supprime le timer sinon je place mon timer pour annuler l ' autorefresh.
ça me permet en fait par un bouton manuel de raffraichissement de relancer un nouveau timer apres avoir supprimé en faisant stop_auto_refresh(0); dans le HTML .
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 15 juin 2009 à 15:52
"Aucun" interêt le setTimeout... si je reste (activement) sur la page 1h tu fais quoi... ton timeout s'éxecutera et je ne pourrais plus me servir du chat... .. .
Le mieux c'est de coupler ça au system d'auth de ton site... si la session tombe le chat aussi... .. .
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 15 juin 2009 à 15:59
j'avais mal lu pour duree==...
revenons à nos moutons :
>>mais le probleme est que certains membres oublie de fermer
>>leur navigateur et consomme donc des ressources inutilement
donc... il te faut tester l'inactivité du visiteur !
iznobe2601
Messages postés26Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention16 juillet 2009 15 juin 2009 à 16:19
@ [../auteur/KANKRELUNE/377168.aspx kankrelune] justement le but c' est de limiter les utilisateurs non actifs sur le chat ,
et je met un bouton manuel derafraichissementqui me supprime et me relance le timer juste apres pour palier au cas ou le membre est actif pendant plus d' une heure .( pas top mais mieux que rien )
faudrait lire un minimum quand meme avant de repondre .
comment peut on faire pour tester l ' inactivité des membres ?
je n ' ai ce probleme que sur une seule page du site : celle de la shoutbox .
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 15 juin 2009 à 16:26
>>faudrait lire un minimum quand meme avant de repondre .
tu causes à qui là ?
[../auteur/KANKRELUNE/377168.aspx kankrelune] ou moi ne cherchons qu'à t'aider
quelqu'un qui tente d'aider, même en disant des
bêtises, je parle pour moi ! ça m'arrive plus souvent
qu'à mon tour, ben il tente d'aider et ça aide malgré tout !
iznobe2601
Messages postés26Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention16 juillet 2009 15 juin 2009 à 16:36
[../auteur/BUL3/812304.aspx @ Bul3 ]
oui je suis entierement d' accord , mais quand meme il faut lire un minimum
je m ' adressais à [../auteur/KANKRELUNE/377168.aspx kankrelune.]
@ [../auteur/KANKRELUNE/377168.aspx kankrelune]
je ne monte pas au creneau mais je ne vois pas vraiment le rapport entre ta reponse et ma question c' est tout et j ' ai encore relu, desolé et merci de vouloir m ' aider .
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 15 juin 2009 à 16:41
"en plus je n ' arrete pas l ' utilisation du chat mais seulement le rafraichissement auto"
Pour moi c'est pareil un chat qui ne se rafraichit pas j'appels ça un forum... .. . ;o)
Bref tu te prend la tête à mon avis... il va falloir jongler avec les event et/ou les cookies pour détecter l'utilisateur inactif de celui qui est actif mais ne change pas de page... ce n'est à mon avis pas à javascript de faire ça... donc je réitère... tu fais un contrôle via les sessions coté serveur... .. .
A la limite en js le plus simple et le moins crade serait de mettre à jour ton timeout lorsque l'utilisateur poste un message... mais bon... c'est du bricolage... .. .
iznobe2601
Messages postés26Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention16 juillet 2009 15 juin 2009 à 17:00
je suis tres novice et j ' avoue que lorsqu ' on me parle de sessions , meme si je sais ce que c ' est , je ne crois pas que mon site est un systeme de session en place .
je me vois mal refaire tout un systeme de sessions expres pour ça .
voilà pour quoi je me suis tourné vers une solution moins " propre" mais qui pourrait limiter les degats des utilisateurs qui ne ferme pas leurs navigateurs ou qui ont plusieurs onglets d ' ouverts .
car le serveur en periode de fort trafic souffre d ' un manque de ressources et de bandes passantes alors c' est sur je peux aussi changer de serveur mais bon je suis pas pressé ....
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 15 juin 2009 à 23:24
Cela dit je ne pense pas que désactiver le chat au bout d'une heure va énormément épargner ton serveur... peu de chance que ton chat prenne énormément de resources s'il est correctement codé... et s'il ne l'est pas c'est de ce coté la qu'il faut se pencher mais bon... .. .
Pour ce qui est des sessions si tu as un site en php il y a forcement des sessions mais bon... .. .
Pour ce qui est de le faire en javascript... une piste... les évènements... .. .
Poste le code que tu fais ça aidera les posteurs à te conseiller... me pencherais peut être dessus plus tard si j'ai le temps... .. .
iznobe2601
Messages postés26Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention16 juillet 2009 16 juil. 2009 à 23:52
bonsoir à vous .
merci kankrelune d ' avoir codé tout ça , je n ' ai pas encore testé , mais ça me parait vachement complexe et long .
pourrais tu m ' expliquer ( succinctement ) le but de tout ce code stp.
excuse mon ignorance , mais alors là , je suis carrément époustouflé !!!!!!!!!! moi qui pensait qu ' un simple clear intervall pourrait suffire ....
il est plus qu ' évident qu ' avec mes 2 lignes de PHP j ' aurais pu faire la meme chose que toi en 2 ou 3 ans d ' études acharnées ( 24 / 24 , 7 /7 ).
enfin j ' aimerais bien comprendre un minimum , je n ' aime pas faire les choses sans avoir compris .
merci d' avance .
je vais essayer de creuser la question de mon coté et de faire des essais et te tiens au courant