Question

Helo,

Je l'ai mis en place une application de chat en utilisant Comet. la demande est « accrocher » sur le serveur jusqu'à ce que les nouveaux messages arive. , Puis, retourne au client avec les nouveaux messages, et se dirige vers le serveur à nouveau.

Mon problème est:

Pour vérifier les nouveaux messages, je Pöll la base de données toutes les 600 ms. J'exécute une simple requête « select ... à partir de messages où messageId> '+ lastMessageId.

En outre, afin de maintenir une présence, mettre à jour la base de données très (très) souvent à chaque utilisateur "LastKeepAliveTime".

La transaction SQL Server journal est de plus en plus grande, et, à un certain point, mon application de chat cesse de fonctionner.

Les utilisateurs de chat ne sont pas utilisateurs enregistrés, ils sont des utilisateurs juste au hasard qui peuvent quitter la page à tout moment.

merci Yaron

Était-ce utile?

La solution

Pouvez-vous utiliser un objet de cache commun pour la dernière garder l'information en vie? Il semble que son une petite quantité d'informations et vous pouvez éviter beaucoup de mises à jour sql.

Autres conseils

Voici comment garder le journal des transactions hors de contrôle: http://support.microsoft. com / kb / 873235

Options dans cet article sont:

  • Faire un psy.
  • Modification de la taille du journal.
  • Configuration extension automatique.
  • Modification du modèle de récupération.
  • Sauvegarde régulièrement le fichier journal.

et plus.

Comme une note de côté, il peut être utile de mettre en place une liste d'utilisateurs et leurs dernières dates d'activité que vous stockez comme des objets dans votre état d'application. Il serait plus rapide d'accéder à cette façon et vous pouvez persister les valeurs moins fréquemment.

Passage du journal complet des transactions en mode en mode simple devrait résoudre vos problèmes de croissance du journal.

Cependant, je dois aussi ajouter que c'est généralement une bonne idée d'éviter l'interrogation si vous le pouvez, car il est pas extensible. Vous pourriez envisager de passer à un modèle événementiel en utilisant Service Broker ou SqlDependency. Il existe d'autres approches pour keep-alive, aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top