2010-03-01 3 views
0

Disons que nous avons une requête de base de données qui dure 20 secondes (l'utilisateur l'exécute en cliquant sur un bouton de la page HTML dans un navigateur). L'utilisateur s'impatiente et seulement après 10 secondes, il rafraîchit son navigateur, seulement pour lancer une nouvelle requête. Comment arrêter la première requête de base de données en cours d'exécution (ou empêcher l'exécution de la seconde)?Arrêt de l'accès à plusieurs bases de données lorsque l'utilisateur actualise le navigateur

Merci

Répondre

1
  • Si cela est en utilisant Ajax, désactivez le bouton qui démarre la requête jusqu'à ce que après la requête est terminée. Lorsque l'utilisation fait la demande, définissez un indicateur dans la session utilisateur, puis démarrez la requête sur un thread distinct. S'ils tentent de le soumettre à nouveau, vérifiez le drapeau et ignorez simplement la demande . Lorsque la requête se termine, réinitialiser le drapeau. Pendant que la requête est en cours d'exécution, le navigateur peut interroger le serveur en attente des résultats.

1

Je ne suis pas un expert, mais vous pouvez stocker le temps qu'il a déposé la dernière requête dans sa session. Si le même utilisateur dépose une autre requête avec 20 secondes, il suffit de l'ignorer.

Ce n'est pas vraiment un moyen de force brute.

3

Première étape serait d'optimiser cette requête, 20 secondes est beaucoup trop long pour la plupart des requêtes. Les utilisateurs ne toléreront généralement pas ce type de mauvaise performance.

Questions connexes