knoppers: Serverseitig Reload beim Client erzwingen

Auch nach intensiven Recherchen in verschiedenen Foren bin ich nicht zur Lösung meiner aktuellen Frage gekommen. Daher versuche ich mal eine Anfrage:
Ich habe in php eine Oberfläche geschrieben, in der mehrere Benutzer Änderungen an Dateien, die auf dem Server liegen, vornehmen können. Man stelle sich nun vor, dass zwei Nutzer (nennen wir A und B) gleichzeitig an demselben Datensatz arbeiten (sie fügen in meinem Fall XML-Tags ein). Angenommen Nutzer A speichert seine Änderungen. Wie kann ich sicherstellen, dass im Moment der Speicherung bei Nutzer B automatisch eine neue Fassung der Daten angezeigt wird?
Bisher habe ich eine Lösung via location.reload() programmiert. Dies bedeutet konkret, dass Browserseitig permanent überprüft wird, ob sich die Datei auf dem Server geändert hat. Das hat aber zur Folge, dass ständig Anfragen an den Server gesendet werden. Schöner wäre doch, wenn die Überprüfung auf Dateiänderung Serverseitig liefe und die Clients bei einer Änderung "informiert", sprich zu einem Reload veranlasst werden...

Weiß jemand, wie das geht?

  1. Hi,

    Wie kann ich sicherstellen, dass im Moment der Speicherung bei Nutzer B automatisch eine neue Fassung der Daten angezeigt wird?

    über HTTP gar nicht. Das Protokoll ist verbindungslos.

    Schöner wäre doch, wenn die Überprüfung auf Dateiänderung Serverseitig liefe und die Clients bei einer Änderung "informiert", sprich zu einem Reload veranlasst werden...

    Du hast soeben verstanden, weshalb HTTP-basierte Chats völlig unsinnig sind. Das Protokoll gibt solche Sachen nicht her.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Moin,

      mach mir Hoffnung ;-), trotzdem: Dank Dir für die Antwort.
      Hast Du 'ne Ahnung, welche Protokolle das hergeben, ob man die irgendwie einbauen kann und ggf. wo ich infos darüber bekomme, oder muss man quasi selbst ein Protokoll schreiben?

      Grüße

      Knoppers

      Hi,

      Wie kann ich sicherstellen, dass im Moment der Speicherung bei Nutzer B automatisch eine neue Fassung der Daten angezeigt wird?

      über HTTP gar nicht. Das Protokoll ist verbindungslos.

      Schöner wäre doch, wenn die Überprüfung auf Dateiänderung Serverseitig liefe und die Clients bei einer Änderung "informiert", sprich zu einem Reload veranlasst werden...

      Du hast soeben verstanden, weshalb HTTP-basierte Chats völlig unsinnig sind. Das Protokoll gibt solche Sachen nicht her.

      Cheatah

  2. Ich habe in php eine Oberfläche geschrieben, in der mehrere Benutzer Änderungen an Dateien, die auf dem Server liegen, vornehmen können. Man stelle sich nun vor, dass zwei Nutzer (nennen wir A und B) gleichzeitig an demselben Datensatz arbeiten (sie fügen in meinem Fall XML-Tags ein). Angenommen Nutzer A speichert seine Änderungen. Wie kann ich sicherstellen, dass im Moment der Speicherung bei Nutzer B automatisch eine neue Fassung der Daten angezeigt wird?

    Eine optimale Lösung gibt es sicher nicht, aber du kannst folgendes machen:
    Die seite auf der die Daten geändert werden ist eine PHP Script, welches die ganze seite erstmal ausgibt und dann einfach in einer Schleife pause macht. Die Seite ist zwar schon komplett angezeigt, läd aber noch weiter, da das Script noch läuft. Das kennt man ja von HTTP-Chats.
    In dieser Schleife prüft das Script nun immer wieder auf Änderungen, und wenn es eine gibt, kann das Script noch schnell einen JavaScript befehl ausgeben und sich darauf hin ggf. beenden.

    greetz RFZ

    1. Hi RoterFruchtZwerg,

      dank Dir für die Antwort - hab sie gestern Abend glatt übersehen. Ich glaube, dass ich damit etwas anfangen kann. Einziges Problemchen noch: Der Server knipst php-scripte nach 30 Sekunden aus, Manipulation ist nicht möglich. Aber immerhin kann das Script dann ja 29 Sekunden lang laufen und dann einen Reload erzwingen. Wenn ich das ganze dann noch in einem Extra-Script (z.B. in separatem 1-Pixel-Frame) laufen lasse, ist auch das Problem gegessen, dass ich den Text ja länger als 30 Sekunden überwachen aber nicht neu laden will, wenn keine Änderung vorliegt.
      Sauber ist das ja nicht - aber besser als nix! Super! Danke!

      Knoppers