2010-05-11 4 views

Répondre

1

Vous devrez continuellement interroger une page qui a la valeur de la base de données. Accrocher une procédure stockée spéciale dans votre base de données qui alerte votre application après une modification.

+0

Pas nécessairement. Il existe des techniques de poussée disponibles. –

+1

@RobertHarvey Tels que? pouvez-vous donner tel? –

2

Vous aurez besoin d'un module personnalisé et des bonnes instructions de déclenchement.

Votre autre option effectue une interrogation.

+0

Comment alerter l'application, qui se trouve sur le navigateur du client? –

+0

L'application est en deux parties: sur le navigateur et sur le serveur web. Le service Web principal est chargé de parler à la base de données, sauf si le demandeur utilise le style .0000001% pour que le navigateur parle SQL à une base de données. –

+0

+1 pour éviter "l'interrogation de la base de données", même si cela n'empêche pas "l'interrogation client à serveur" –

5

Le serveur (base de données/Web) ne peut pas établir une connexion - seul le client peut le faire. Vous devrez donc interroger la base de données jusqu'à ce qu'il y ait une mise à jour. Vous pouvez créer un service Web qui vérifie la base de données et les utilisations de jQuery.

Édition: Je suis corrigé. Il est possible de garder une connexion AJAX ouverte jusqu'à ce que le serveur "pousse" les données. Voir: http://en.wikipedia.org/wiki/Reverse_Ajax

Et apparemment, il s'agit vraiment d'interrogation: http://en.wikipedia.org/wiki/Push_technology#Long_polling. Si le serveur n'a encore aucune donnée à envoyer, il maintient la connexion ouverte jusqu'à ce qu'elle le fasse. Ce n'est pas une technologie «pure», car le client n'a pas de port d'écoute auquel le serveur se connecte. L'effet est similaire, cependant.

Éditer 2: Donc, de retour à répondre à votre question ... Vous devrez choisir comment "interroger" le service Web. Le service Web devrait alors vérifier la base de données pour voir s'il y avait des mises à jour. Vérification de la base de données pour les mises à jour pourrait être le plus difficile et dépend vraiment de vos besoins. Vous pouvez exécuter une requête SQL pour voir si quelque chose a changé, mais comment le sauriez-vous? Vous auriez besoin d'une sorte de paramètre (généralement une date) pour comparer. Si mal fait, vous pourriez manquer quelques mises à jour ou avoir plusieurs hits pour une mise à jour. Ce que l'Autocratie a dit serait un bon moyen d'être averti des mises à jour. Vous pouvez conserver cette liste dans la base de données, en mémoire, etc. et l'effacer lorsque le client reçoit les mises à jour.

0

Vous devrez essentiellement interroger en permanence le serveur pour les modifications de la base de données. Le serveur ne peut pas passer un appel au client, le client devra donc constamment demander au serveur s'il y a eu des changements.

+0

Voir http://en.wikipedia.org/wiki/Reverse_Ajax –

1

Je suggère de créer une page HTML qui utilise setIntreval() pour faire des appels AJAX à plusieurs reprises à un script PHP qui interroge votre base de données. Vous pourriez utiliser JSON et PEAR pour rendre la tâche un peu plus facile.

Liens de référence:

+0

Merci beaucoup. Votre méthode fonctionne parfaitement! Juste ne peut pas placer l'intervalle trop bas ou il y a des problèmes avec l'ouverture/fermeture des lecteurs de données. –

11

Ce que vous décrivez est familièrement appelé programmation Comet. Comet décrit un groupe de techniques pour pousser le contenu vers une page Web avec une connexion HTTP persistante.

La poussée serait lancée en utilisant une combinaison déclencheur/procédure stockée dans le serveur de base de données. De cette façon, cela se produit peu importe d'où vient la mise à jour des données.

+1

Vous l'avez. Wikipedia (http://en.wikipedia.org/wiki/Comet_%28programming%29): Comet ... est connu par plusieurs autres noms, y compris Ajax Push, Reverse Ajax, Web bidirectionnel, HTTP Streaming et HTTP le serveur pousse entre autres. –

+0

Cela semble très bien. Je vais devoir regarder dedans. Merci pour le conseil! –

+2

par exemple http://www.ape-project.org/ – choise

3

Im faire presque la même chose avec un chat recharge un script php chaque xx sec.

se présente comme suit: j avec $ remplacer sinon en utilisant jQuery.noConflict ..

j(".chatref").everyTime(3000,function(i){ 
    j.ajax({ 
     url: "chatx.php", 
     cache: false, 
     success: function(updated){ 
      j(".chatref").html(updated); 
      ...do stuff.. 
     } 
    }); 

C'est une méthode très agréable je pense :) si vous voulez envoyer vars à chatx.php il suffit d'ajouter ? php & x = 1 & y = 2?>

Questions connexes