Chat Ajax, economie de requêtes

[Résolu/Fermé]
Signaler
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
-
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
-
Bonsoir,

Je suis en train de créer un chat en ajax et pour une question de fluidité et d'économie de requêtes je me questionne sur les différentes solutions possibles.

Mon script va boucler très rapidement (100 fois par secondes je pense), et donc je pensais a chaque boucle récupérer qu'un certain nombre de message (très peu même) et les enregistrer tous ensemble dans un fichier texte que j'aurais traité avec php pour l'affichage.

Avec cette solution à chaque requête je n'irais chercher que les messages que je n'ai pas encore affiché puisque je retiendrais l'ID du dernier message récupéré et n'irais chercher que ceux arrivés après cet ID.

Le soucis c'est que je ne suis pas tout seul à chatter (logique) donc il faudrais créer un fichier txt par utilisateur connecté, pour chaque salon occupé... un beau bazar !

-

Une seconde solution qui serait un peu similaire mais qui aurait été de créer une entrée par utilisateur connecté contenant l'intégralité des messages postés depuis son arrivée (comme dans un .txt).
Du coup plutôt que de faire une seule requête qui va chercher plusieurs centaines d'entrées j'en ferais que deux, une qui va chercher le tout et une qui va chercher le ou les quelques nouveaux messages.

Je ne sais pas vers quoi m'orienter ou si il y a une solution dans le genre pour économiser les requêtes et gagner en fluidité.

Vos conseils seront précieux ! Merci d'avance :)

1 réponse

Messages postés
597
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
84
Un bon tuto vaut mieux qu'un long discours : http://openclassrooms.com/courses/un-chat-en-php-ajax

Mais si j'ai bien compris, tu veux que lorsqu'on se connecte, on voit les messages postés avant la connexion. Si c'est bien ça, pourquoi tu veux faire ça ?? Même MSN le faisait pas.
Messages postés
1081
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
26 janvier 2019
107
Salut et merci de ta réponse, non du tout je récupère que les messages postés après l'entrée dans le salon.

J'ai réussi à créer ce que je voulais faire comme ceci :
au chargement de ma page d'accueil je lance une fonction ajax avec une valeur contenant le time() d'arrivée sur l'accueil et une valeur "0" étant donné qu'aucun message n'est affiché.

Dans mon deuxième fichier je compte les messages postés après l'arrivée sur l'accueil (time) et je compare ce chiffre avec celui que j'ai posté (0). Si il n'y a pas de nouveaux messages, rien ne se passe (aucune requête dans ma bdd hors celle du count), sinon je renvois le nouveau nombre de messages affichés et les messages eux même.

Il ne me reste plus qu'a récupérer ma nouvelle valeur de messages affichés dans ma page d'accueil, si il est différent de celui envoyé je le met à jour et affiche les messages, sinon rien ne se passe (et c'est mieux car la div ne se rafraichit pas si il n'y a pas de nouveaux messages et je peux ainsi selectionner le texte, cliquer sur les liens etc).