2010-05-11 6 views

Antwort

1

Sie müssen fortlaufend eine Seite mit dem Wert aus der Datenbank abrufen.

+0

Nicht unbedingt. Es gibt Push-Techniken zur Verfügung. –

+1

@RobertHarvey Wie? Kannst du so etwas geben? –

2

Hängen Sie eine spezielle gespeicherte Prozedur in Ihre Datenbank ein, die Ihre Anwendung nach einer Änderung benachrichtigt. Sie benötigen ein benutzerdefiniertes Modul und die richtigen Triggeranweisungen.

Ihre andere Option ist Polling.

+0

Wie würde es die Anwendung alarmieren, die sich im Browser des Clients befindet? –

+0

Die Anwendung besteht aus zwei Teilen: im Browser und auf dem Webserver. Der Back-End-Webdienst ist verantwortlich für das Gespräch mit der Datenbank, es sei denn, der Fragesteller verwendet den .0000001% -Stil, wenn der Browser SQL mit einer Datenbank verbindet. –

+0

+1 für eine Möglichkeit, "Datenbankabfrage" zu verhindern, auch wenn "Client-Server-Abfrage" nicht verhindert wird –

5

Der Server (Datenbank/Web) kann keine Verbindung initiieren - nur der Client kann. Sie müssen also die Datenbank abfragen, bis ein Update verfügbar ist. Sie können einen Webdienst erstellen, der die Datenbank prüft und den jQuery verwendet.

Edit: Ich stehe behoben. Es ist möglich, eine AJAX-Verbindung offen zu halten, bis der Server Daten dorthin "schiebt". Siehe: http://en.wikipedia.org/wiki/Reverse_Ajax

Und anscheinend ist es wirklich Umfragen: http://en.wikipedia.org/wiki/Push_technology#Long_polling. Wenn der Server noch keine Daten zum Senden hat, hält er die Verbindung offen, bis sie es tut. Es ist keine "reine" Push-Technologie, da der Client keinen Überwachungsport hat, mit dem der Server verbunden ist. Der Effekt ist jedoch ähnlich.

Bearbeiten 2: Zurück zur Beantwortung Ihrer Frage ... Sie müssen wählen, wie Sie den Web-Service "abfragen". Der Web-Service müsste dann die Datenbank überprüfen, um zu sehen, ob es Updates gab. Das Überprüfen der Datenbank auf Updates ist möglicherweise am schwierigsten und hängt wirklich von Ihren Anforderungen ab. Sie können eine SQL-Abfrage ausführen, um zu sehen, ob sich etwas geändert hat, aber woher wissen Sie das? Sie benötigen eine Art von Parameter (in der Regel ein Datum), mit dem verglichen werden kann. Wenn es falsch gemacht wird, könnten Sie einige Updates verpassen oder mehrere Treffer für ein Update haben. Was Autokratie sagte, wäre ein guter Weg, um über Updates informiert zu werden. Sie können diese Liste in der Datenbank, im Speicher usw. aufbewahren und löschen, wenn der Client die Aktualisierungen erhält.

0

Grundsätzlich müssen Sie den Server ständig nach Änderungen an der DB abfragen. Der Server kann den Client nicht anrufen, so dass der Client den Server nur ständig nach Änderungen fragen muss.

+0

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

1

Ich würde vorschlagen, eine HTML-Seite zu erstellen, die setIntreval() verwendet, um wiederholt AJAX-Aufrufe an ein PHP-Skript auszuführen, das die Datenbank abfragt. Sie könnten JSON und PEAR verwenden, um die Aufgabe ein wenig zu vereinfachen.

Referenz Links:

+0

Verstanden. Danke vielmals. Ihre Methode funktioniert perfekt! Ich kann das Intervall nicht zu niedrig einstellen oder es gibt Probleme beim Öffnen/Schließen von Datenlesern. –

11

Was Sie beschreiben, ist Umgangssprache Comet Programmierung. Comet beschreibt eine Gruppe von Techniken zum Übertragen von Inhalten auf eine Webseite mit einer persistenten HTTP-Verbindung.

Der Push wird mit einer Kombination aus Trigger und gespeicherter Prozedur im Datenbankserver ausgelöst. Auf diese Weise tritt es unabhängig davon auf, woher das Datenupdate stammt.

+1

Du hast es. Wikipedia (http://en.wikipedia.org/wiki/Comet_%28programming%29): Comet ... ist unter verschiedenen anderen Namen bekannt, darunter Ajax Push, Reverse Ajax, Zwei-Wege-Web, HTTP-Streaming und HTTP Server Push unter anderem. –

+0

Das klingt sehr nett. Ich werde mich darum kümmern müssen. Danke für den Hinweis! –

+2

zum Beispiel http://www.ape-project.org/ – choise

3

Im tun fast gleiche mit einem Chat

Check folgenden Link, um zu überprüfen, neu lädt ein PHP-Skript jedes xx sek.

sieht wie folgt aus: ersetzen j mit $, wenn nicht jQuery.noConflict mit ..

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

Dies ist eine sehr schöne Methode, die ich denke :) wenn Sie wollen Vars schicken, nur um zu chatx.php hinzufügen ? php & x = 1 & y = 2?>

Verwandte Themen