2011-05-29 2 views
2

J'ai setInterval implémenté avec JQuery pour mettre à jour un div dans une page protégée. Lorsque la session de cette partie du site expire, l'utilisateur est redirigé vers le côté public du site. Cette action se produit uniquement si l'utilisateur clique sur un lien qui actualise cette page. Le problème que j'ai est que les utilisateurs imprudents ne se déconnectent pas et setInterval continue ses tentatives de mettre à jour le div créant ainsi un énorme fichier journal d'accès dans Apache. (> 12 Mo par jour) setInterval continue sa tentative de mise à jour car même si la session est morte, la page n'est pas actualisée, donc setInterval continue.setInterval issues

Existe-t-il un moyen de tuer setInterval après un certain laps de temps? Dites 12 heures ou plus.

+0

lorsqu'un utilisateur quitte la page javascript n'est plus en cours d'exécution – Ibu

+0

il suffit d'ajouter une validation dans votre code – Ibu

+0

C'est tout le problème, ils quittent rarement si javascript continue sa tentative de mettre à jour la div avec setTimeout. – jim

Répondre

1

Oui, la fonction setTimeout renvoie un timerID que vous pouvez utiliser pour arrêter le temporisateur en appelant clearTimeout. Cependant, setTimeout n'apparaît qu'une fois et ils sont automatiquement annulés lorsque l'utilisateur quitte la page. (utilisez-vous des cadres, sinon cela ne devrait pas poser problème)

Je suggère d'utiliser une méthode moins verbeuse et de compter sur AJAX et un contexte de session pour détecter quand l'utilisateur n'est plus actif et simplement le déconnecter automatiquement.

+0

@John, je suis curieux, est @ user713170 votre jumeau maléfique ou quelque chose? :) –

+0

Salut John, merci. Voici le problème que je vois avec votre suggestion. Cette div qui nécessite la mise à jour est de nature globale et s'applique à toutes les pages de la partie protégée si le site. Si c'était sur une seule page, je pourrais faire ce que vous suggérez. – jim

+0

@ Frédéric, je me demandais la même chose. – jim