Efficace de recharger des données / envoi de données depuis le serveur vers le client
Je suis à la recherche de la "voie à suivre" (c'est à dire le plus efficace, le plus utilisé, le général acceptées) lorsque vient le temps de rechargement des données à partir d'un serveur web à un front-end. À la fin de l'application, je vais avoir plusieurs champs de sortie, où des données doivent être écrites, par exemple comme ceci:
Le flux de données sera différents les uns des autres à la fin de l'application. Les lignes devra être rechargé avec des produits frais, des données à jour à partir du serveur.
J'ai pensé à l'aide de requêtes Ajax pour mettre à jour comme à chaque seconde, mais il y a une autre façon de faire. Les requêtes Ajax va causer beaucoup de trafic de données. Aussi, lors de l'utilisation du Facebook chat, vous n'avez pas à attendre à chaque seconde, les chats sont reçus presque instantanément. Pourtant, je ne vois pas du tout l'Ajax d'interrogation demandes lorsque j'utilise les outils de développement de Mozilla Firefox. Cela m'a fait penser, si il y aurait un autre moyen pour ce faire.
J'ai regardé dans Node.js mais il semble que ce n'est pas possible avec mon hôte.
J'ai entendu des gens parler d'Ajax Push, c'est ce que je devrais utiliser? Si oui, pouvez-vous me donner un exemple d'utilisation basique?
Si non, quel serait puis être le chemin à parcourir d'avoir de multiples flux de données qui doivent être rechargé en moins d'une seconde?
Exigences sont vitesse et de données à faible trafic. Par conséquent, elle ne serait pas une option à interroger en permanence le serveur, je pense, parce que cela créerait une énorme surcharge.
je ne pense pas que c'est de toute importance, mais je suis en PHP5.3 dans le back-end et JavaScript avec jQuery 1.9.1 à l'extrémité avant.
OriginalL'auteur Keelan | 2013-04-20
Vous devez vous connecter pour publier un commentaire.
Cette question a été posée à un certain nombre de fois, mais d'une façon légèrement différente. Voici quelques références qui sont intéressant à lire:
En résumé: si vous êtes à la recherche à la construction de votre solution à l'aide de PHP sur Apache puis en maintenant ouvrir les connexions persistantes (HTTP long du scrutin ou streaming) va utiliser des ressources très rapidement (est très inefficace). Alors, vous auriez mieux fait d'utiliser un solution hébergée (*avertissement - je travaille pour une solution hébergée).
HTTP Long de bureaux de et Streaming HTTP sont des solutions qui ont été remplacées par Server-Sent Events et les WebSockets. Donc, lorsque cela est possible (où le client web fournit l'appui), vous devez utiliser l'une de ces solutions avant de retomber à un HTTP solution. Un bon web en temps réel la technologie permettra de gérer automatiquement pour vous.
Depuis votre diagramme montre vous abonner à plusieurs flux de données, vous devez également considérer un Publier/Souscrire solution qui s'inscrit naturellement dans cette. Encore une fois, un bon realtime web tech solution sera de vous fournir cela.
Également voir le realtime web de la technologie de guide.
OriginalL'auteur leggetter
Je pense que ce que vous cherchez est généralement appelé La comète. L'a été cette technique est souvent faite au travail est comme suit:
Les données sont en effet généralement transférés en JSON, mais vous pouvez choisir ce que l'encodage vous le souhaitez. Voir ici pour un exemple de comment faire cela. Goosh est un autre exemple de cette technique, et est donc Interactive Python Shell. Le code pour tous est disponible.
Sur le PHP côté, vous voulez créer une page qui va répondre à ces "arrière-plan" JavaScript Comète demandes. Il pourrait être la même page que celle que l'utilisateur charge, mais disons que c'est différent, pour la commodité de l'exposé. De sorte que l'utilisateur charge
index.php
et le JavaScript Comète code appellegetNewData.php
pour récupérer de nouvelles données.Dans votre
getNewData.php
vous voulez attendre pour votre événement et de renvoyer les données ensuite. Vous ne voulez pas utiliser d'interrogation pour cela, mais il y a des bibliothèques PHP qui permettent d'utiliser différentes stratégies de communication interprocessus à attendre sur les événements, voir cette question, par exemple. Le pseudocode de haut niveau pour votregetNewData.php
se présenterait comme suit:Oui: envoyer une réponse indiquant l'absence de données
Pas: envoyez la réponse avec les nouvelles données
OriginalL'auteur angelatlarge