2010-02-16 10 views
4

Je travaille actuellement sur un framework PHP léger à utiliser avec un peu d'ajax pour mon site, et j'ai rencontré un problème intéressant qui m'a complètement dérouté. L'ajax est pour une série de notifications, de sorte que le javascript envoie une requête ajax pour de nouvelles informations toutes les 30 secondes. Cet ajax est actif sur toutes les pages de l'ensemble du site, donc je me rends compte qu'il y a beaucoup de demandes car plusieurs centaines d'utilisateurs naviguent sur le site à un moment donné, beaucoup avec plusieurs fenêtres ouvertes.Ajax à haute fréquence et surcharge de sommeil MySQL

Syntaxe sage tout est parfait. Le problème est, quand j'ai activé l'ajax pour ma communauté, il y a une accumulation de 30 - 40 commandes SLEEP dans la base de données MySQL. Tout cela semble ignorer le délai d'attente de 10 secondes. Cela affecte la performance de tout le site. Je crois comprendre que les commandes laissées en veille sont le résultat d'une connexion qui n'a pas été fermée. J'utilise la classe orientée objet MySQLi et l'ai étendue avec quelques fonctions de la mienne. Tout est par le livre de texte et vérifié par rapport à la documentation, et j'ai fait en sorte que chaque petit morceau de la classe MySQLi est fermé et libéré.

Si quelqu'un a de la sagesse ou de l'expérience avec ce type d'effet, je serais très reconnaissant pour tout conseil.

Répondre

1

Avez-vous essayé une approche par poussée par rapport à votre approche de tirage/sondage actuelle? Jetez un oeil à la comète:

Cependant, il y a quelques inconvénients, le principal étant que vous devez maintenir une connexion ouverte, et certains navigateurs limitent le nombre de connexions que vous pouvez gérer. Les négociations ci-dessous sur les avantages et les inconvénients de l'utilisation de la comète et suggère une approche vote hybride:

est ici une question stackoverflow qui parle de la comète aussi:


+0

Je ne suis pas sûr de savoir comment je pourrais intégrer COMET dans mon design. Merci pour la suggestion que je vais garder à l'esprit. – rayblasdel

+0

Certains des liens que j'ai postés parlent de l'implémentation de Comet, même avec AJAX. –