Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Général Conception Web > Débuter
Débuter Forum d'entraide pour débuter dans la création de sites Web
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2011, 14h40   #1
Invité de passage
 
Homme
Étudiant
Inscription : juillet 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juillet 2011
Messages : 6
Points : 0
Points : 0
Par défaut Requête serveur pour chat : comment éviter ralentissement

bonjour,
Je suis exactement dans le même cas que ici, et j'utilise AJAX avec jQuery(une librairie js) pour faire mon chat. Mais le problème du rafraichissement toute les secondes est toujours, car bien que cela soit bien moins visible, on envoi quand même toute les secondes une requête vers le serveur pour savoir s'il y a un nouveau message et ça ralentit la bande passante.

J'ai un peu analysé le comportement de facebook avec un HTTP trackeur et j'ai remarqué que facebook envoyait *une* seule requête qui retournait une réponse uniquement quand il y avait un nouveau message
Je ne vois pas du tout comment coder ça coté serveur avec PHP, mais facebook utilise apparemment une autre technologie car la page appelé pour la vérification des messages n'a pas d'extension..

Quelqu'un pourrai m'expliquer comment ils font ?
jrm0695 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 23h15   #2
Membre éclairé
 
Inscription : mars 2009
Messages : 228
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 228
Points : 318
Points : 318
Bonsoir,

Une bonne pratique consiste à ne pas mettre d'extension dans les URL afin de pouvoir changer de technologie. Il n'est pas indispensable d'avoir une URL .php pour interpréter une requête à l'aide de PHP (voir par exemple apache mod_rewrite, utilisé par exemple dans Zend).

J'avais jeté un oeil sur le comportement de facebook il y a quelques temps. Avant, si j'ai bien vu, ils requêtaient approximativement toutes les 5 secondes.

Là, on dirait qu'ils sont plus sioux. Si je crois Firebug, ils requêtent toutes les 20 secondes et attendent jusqu'à 20 secondes côté serveur avant de lâcher la connexion. S'il n'y a pas de message à envoyer au client pendant 20 secondes, ils attendent sagement avant de dire : Il y a rien. S'il y a un message à envoyer, il l'envoie directement.

Je doute que ça soit préférable pour le serveur (beaucoup de connexion ouvertes), en tout cas, ça permet de signaler quasi-instantanément les nouveaux messages sans requêter le serveur toutes les secondes s'il ne se passe rien.

Après, j'ignore quelle technologie ils utilisent (j'ai cru lire C++, mais je n'en suis pas sûr) et j'ignore si ça serait meilleur pour la bande passante.

Pour faire la même chose en PHP, je pense qu'il suffit de jouer avec des sleep pour ne pas lâcher la connexion trop tôt :

Code :
1
2
3
4
5
6
7
8
9
10
11
/* 
 * on attend ~20 secondes en verifiant les nouveaux message a envoyer 
 */
for ( $i = 0; $i < 20; $i++ ){
	if ( ! hasMessages() ){
		sleep(1);
	}	
}
//on repond rien au pire
sendMessages();
Mais bon, mon petit doigt me dit que ça serait de la barbarie valable pour un nombre très limité d'utilisateurs...

Bye
bretus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h17.


 
 
 
 
Partenaires

Hébergement Web