2010-06-22 2 views
2

Je suis en train de coder un site en PHP et Javascript qui implémente la fonctionnalité de messagerie privée, et je voulais l'avoir quand un utilisateur reçoit un nouveau message qu'il lui notifie (par une icône 'mail' clignotante en haut de l'écran). La question est comment implémenter cette fonctionnalité sans avoir à vérifier la base de données de messages pour les messages non lus à l'utilisateur spécifié chaque fois qu'ils chargent une page, il semble que trop de charge de serveur pour chaque utilisateur à effectuer sur chaque pageload.Le meilleur moyen de vérifier les nouveaux messages privés des utilisateurs sur le site Web?

Quelqu'un peut-il suggérer une méthode plus efficace? Peu importe si l'utilisateur n'est pas averti instantanément lors de la réception d'un nouveau message.

Merci!

Répondre

1

$ Pour éviter de le faire chaque chargement de page vous pourriez avoir un javascript dans une fonction de minuterie qui appelle à la base de données et vérifie si l'utilisateur a reçu des messages. Comme Am a dit que si vous avez juste un drapeau mis sur la table d'utilisateur, vous pouvez juste faire une

select message_flag from tbl_usrs where usr_id = $usr_id 

Maintenant que dit une instruction select comme ça par lui-même être couru à chaque chargement de page ne sera pas vraiment augmenter la charge sur votre serveur que beaucoup, sauf si vous exécutez un site avec des quantités importantes d'utilisateurs.

+0

Serais-je obligé de redéfinir le message_flag à 0 après cela? Je ne sais pas trop sur les charges du serveur etc, donc merci de m'avoir informé - j'ai codé avec l'efficacité à l'esprit tellement que je suis probablement allé OTT avec elle ha – Tommo

+0

Vous ne voulez pas mettre le message_flag revient à la valeur par défaut jusqu'à ce que l'utilisateur ait visité la boîte de message ou que vous ne puissiez pas réinitialiser le drapeau avant d'avoir vu tous les messages non ouverts. J'irais probablement avec la deuxième méthode et attribuer à chaque entrée dans la table des messages un drapeau vu de quelque sorte. Ma méthodologie lors de l'élaboration d'un nouveau projet (personnel) est de le faire d'abord, puis quand il brise quelque part le réparer. Pour les clients, je réfléchis à la façon dont tout cela va fonctionner et aux exigences avant d'aller trop loin avec l'évolutivité, etc. –

0

Vous pouvez ajouter un nouveau champ à la table des utilisateurs, qui sera défini sur true à chaque fois qu'un nouveau message arrive dans sa boîte de réception. De cette façon, à la réception des messages, l'indicateur est défini et vous ne ferez jamais une requête pour vérifier les messages non lus.

0

Vous pouvez ajouter un champ 'messages' à la table des utilisateurs et l'incrémenter lorsqu'un message est envoyé à un utilisateur.

0

Je dirais que le chargement du serveur n'est probablement pas trop important pour vérifier la présence d'un nouveau message à la table des messages à chaque chargement de page.

Avec une indexation appropriée, cela ne devrait pas être un problème du tout.

0,02

Questions connexes