IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Requête serveur pour chat : comment éviter ralentissement

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    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
    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 ?

  2. #2
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. Sous-requête utilisée plusieurs fois : Comment éviter ?
    Par StringBuilder dans le forum PL/SQL
    Réponses: 5
    Dernier message: 11/07/2011, 09h37
  2. Requête paramétrée pour éviter la duplication
    Par david71 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 29/05/2008, 12h05
  3. Réponses: 4
    Dernier message: 12/07/2006, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo