Ankündigung

Einklappen
Keine Ankündigung bisher.

Echtzeitdaten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Echtzeitdaten

    Hallo,

    ich möchte Daten von mehreren Wetterstationen mit PHP aufbereiten und im Browser über Ajax darstellen.

    Die Frage ist, wie kann ich die Daten (z.B. Windgeschwindigkeit) temporär zwischenspeichern, so dass ich sie ohne Umwege möglichst schnell an den Browser senden kann? Die MySQL-Datenbank möchte ich aus Performancegründen nur zur Archivierung der Daten nutzen.

    Wie kann ich also temporäre Daten mehreren Clients schicken? Die Daten der Wetterstationen werden über seperate PHP Skripte ausgelesen. Es gibt also keine direkte Verbindung zu den AJAX Skripten. Also kann ich die Daten nicht einfach durchreichen. Eignet sich Memcache dafür?

    Und wie kann ich die AJAX Request Intervalle möglichst kurz (Polling einmal pro Sekunde), aber dennoch ressourcenschonend gestalten? Leider sind die HTML5 WebSockets noch nicht fertig.

    Danke,
    root66

  • #2
    Wie kann ich also temporäre Daten mehreren Clients schicken?
    Gar nicht. Immer nur an einen gleichzeitig. Ein Stichwort wäre long polling, ein anderes comet

    Eignet sich Memcache dafür?
    Ja

    Kommentar


    • #3
      Zitat von xm22 Beitrag anzeigen
      Gar nicht. Immer nur an einen gleichzeitig. Ein Stichwort wäre long polling, ein anderes comet
      Ich meinte mit "Wie kann ich also temporäre Daten mehreren Clients schicken? "

      die Tatsache, daß man normalerweise eine Datenbank nutzt, um allen Clients den gleichen Datenbestand zu liefern. Die Daten werden von einem Worker-Skript gesammelt, sollen in meinem Fall aber nicht in die Datenbank.

      Die Frage ist dann, wie verteilt das Worker-Skript die Daten nun an die PHP-Ajax-Anfragen (seperates Skript)? Bei anderen Programmiersprachen kann man zwischen zwei Threads eine direkte Verbindung aufbauen und die Daten durchreichen.

      Kommentar


      • #4
        Ajax gibt der Anfrage etwas individuelles mit und der Server wertet dieses Etwas aus.

        Kommentar


        • #5
          die Antwort bleibt gleich - du schickst NIE etwas an mehrere CLients

          der Client stellt einen Request (und wenn der nur im Abruf deiner Seite besteht)-> Webserver forkt einen neuen Workerprozess für DIESEN Client
          Workerprozess "sieht" dass er PHP braucht -> startet php interpreter
          Php-Interpreter beackert das Script, generiert html-Antwort (Preprocessor for hypertext Protocol) -> übergibt html an workerprozess -> php beendet, workerprozess sendet Antwort an den fragenden CLient -> workerprozess beendet.. da gibts immer nur 1 Client

          also musst du wohl oder übel die Daten irgendwo "zwischen lagern" - Datenbank bzw Memcache wurde ja schon genannt

          Kommentar


          • #6
            Zitat von xm22 Beitrag anzeigen
            Gar nicht. Immer nur an einen gleichzeitig. Ein Stichwort wäre long polling, ein anderes comet
            Ich lese gerade folgendes zum "Long Polling":
            "Wie schon angedeutet, ist AJAX Long Polling vor allem dann zu gebrauchen, wenn serverseitig nicht allzuviele Events eintreten, die dann aber möglichst sofort an die Clients weitergegeben werden sollen. Zum Beispiel bietet sich der Einsatz von Long Polling bei Shoutboxen an. Weniger geeignet hingegen ist es zum Beispiel für einen stärker frequentierten Chat, da dort zu viele Verbindungen zu schnell aufgebaut und getrennt würden."

            Quelle:
            http://wiki.ajax-community.de/tutori...comet-longpoll


            In meinem Fall stehen immer Daten an (z.B. die aktuelle Windgeschwindigkeit) und ich muß nicht erst auf ein Ereignis warten.

            Ist in dem Fall dann "Long Polling" doch nicht geeignet?

            Kommentar


            • #7
              es geht mehr um die Art und Weise - der Client fragt beim Server an, ob neue Daten vorliegen - und bekommt sie (aber eben jeder Client fragt individuell)

              Kommentar


              • #8
                Du hast noch nicht mal beschrieben, wer Deine Clients sind.

                Kommentar


                • #9
                  Gerade gefunden:

                  http://jwebsocket.org/

                  Kommentar


                  • #10
                    Zitat von nikosch Beitrag anzeigen
                    Du hast noch nicht mal beschrieben, wer Deine Clients sind.
                    Aktuelle Webbrowser mit aktiviertem Javascript.

                    Kommentar


                    • #11
                      Das meine ich nicht. Sondern, warum es Echtzeitdaten sein müssen.

                      Kommentar


                      • #12
                        Zitat von nikosch Beitrag anzeigen
                        Das meine ich nicht. Sondern, warum es Echtzeitdaten sein müssen.
                        Wenn man eine Wetterstation (z.B. von Conrad) direkt an seinen PC anschliesst, dann hat man das Gefühl, daß man "live" dabei ist. Wenn man dagegen nur alle paar Sekunden aktualisiert, dann empfinden viele das als ruckelnd und negativ.

                        Einmal pro Sekunde würde reichen und da geht es mir halt darum, die Last des Servers möglichst zu reduzieren.

                        Kommentar


                        • #13
                          Dann erneut die Frage:
                          Du hast noch nicht mal beschrieben, wer Deine Clients sind.
                          Daten einer Wetterstation werden normalerweise ja nicht gebroadcastet.

                          Kommentar


                          • #14
                            Zitat von nikosch Beitrag anzeigen
                            Dann erneut die Frage:


                            Daten einer Wetterstation werden normalerweise ja nicht gebroadcastet.
                            Es handelt sich bei meinem Projekt auch nicht um eine Wetterstation, aber halt um technische Sensorenwerte. Ist sehr speziell und ich fand eine Wetterstation kann man sich besser vorstellen.

                            Kommentar


                            • #15
                              PHP ist die falsche Programmiersprache für Echtzeitdatenverarbeitung, vor allem dann, wenn auch noch ein Client informiert werden soll. Überhaupt ist das Internet das falsche Medium für Echtzeitanwendungen, die Latenzen und Responsezeiten sind viel zu hoch für einen realistischen Echtzeitbetrieb, und schwanken tun sie auch noch.

                              Kommentar

                              Lädt...
                              X