Bild aktualisieren, sobald sich was tut?

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

  • Bild aktualisieren, sobald sich was tut?

    Hallo.
    Ich würd gern ein 1024 x 768 Bild (.JPG oder .GIF) auf einer Webseite anzeigen,
    und wenn sich das Bild ändert,
    soll es auch beim Besucher der Seite (am liebsten in Echtzeit) aktualisiert werden.

    Ich habe schon über einen automatischen Refresh alle 5 Sec. nachgedacht.
    Aber das bedeutet zuviel Daten hin und her.
    Ein Stream ist wohl nicht erforderlich, denn die Bilder ändern sich mal nach 10 Sek., dann vielleich nach 2 Min. und dann ist 15 Minuten lang nichts neues.

    Kriegt man sowas überhaupt mit PHP "Bordmitteln" hin?

    Da muß dann auch der Cache abgeschaltet werden, sonst kommt immer nur das gespeicherte Bild, oder?

    Hat irgendjemand eine Idee?
    Bin mal gespannt.

    Beste Grüße
    Hermine

  • #2
    PHP ist läuft serverseitig. Das heißt, das Bild wird an den Klient gesendet und danach passiert nichts mehr.

    Kommentar


    • #3
      Was kann ich tun?
      Flash benutzen? (PHP kann ja einige Flash Funktionen).

      Würde lieber bei 'richtigem' PHP bleiben.

      Muß denn wirklich der Client alle 5 Sekunden nachfragen?
      Das gibt dann doch ein schlimmes Geflacker auf dem Bildschirm, wenn sich die Seite alle 5 Sekunden aufbaut!
      Das will ich eigentlich vermeiden.

      Beste Grüße HermineG

      Kommentar


      • #4
        könntest mit AJAX im hintergrund abfragen ob ein neues bild da ist.

        Ganz generell: Du brachst ja nicht immer das komplette bild zu übertragen.

        Flash-Funktionen???

        Kommentar


        • #5
          @TobiaZ:

          Jetzt hast Du mir aber den Mund wässrig gemacht.

          Wie fragt man mit AJAX im Hintergrund ab, ob sich was geändert hat?
          (gibt's irgenwelche guten Tutorials, die Du empfehlen kannst?)

          Und was meinst Du mit "nicht das ganze Bild" ändern?

          Besten Gruß
          HermineG

          Kommentar


          • #6
            selber suchen und ergebnis hier posten.

            Kommentar


            • #8
              wird das bild bei veränderung auf dem server gespeichert?

              dann könntest du vereinfacht mit einem 1x1px iframe arbeiten:
              - sessions nutzen
              - meta-refresh im iframe
              - abfrage per php ob sich die erstellungszeit des bildes im vgl. zu einem session-flag geändert hat
              - wenn ja:
              -- zeitstempel in die session schreiben
              -- ganze seite reloaden => javascript
              - wenn nein:
              -- nix tun, ausser refreshen
              Kissolino.com

              Kommentar


              • #9
                Wie fragt man das mit AJAX am besten ab? Mit Zeit (jede Sekunde soll geprüft werden)?
                [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

                Kommentar


                • #10
                  Original geschrieben von tomstig
                  Wie fragt man das mit AJAX am besten ab? Mit Zeit (jede Sekunde soll geprüft werden)?
                  weißt das vllt jemand?
                  [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

                  Kommentar


                  • #11
                    Original geschrieben von tomstig
                    Wie fragt man das mit AJAX am besten ab? Mit Zeit (jede Sekunde soll geprüft werden)?
                    So häufig würde ich das nicht machen ...

                    Aber generell, ja.
                    Über setTimeout/setInterval immer wieder Requests absetzen, wenn sich nichts geändert hat, nichts tun, andernfalls Bild neu laden (z.b. durch Anhängen des aktuellen Zeitstempels an die Bildquelle).
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #12
                      ich hab' sowas 'mal mit SAJAX gemacht...
                      prüft alle 3 sekunden anhand von filemtime, ob bild.jpg geändert wurde. wenn ja, wird das bild neu vom server geholt...

                      PHP-Code:
                      <?php
                      require("Sajax.php");  // SAJAX by ModernMethod -  http://www.modernmethod.com/sajax/

                      function checkpic($t$pic 'bild.jpg') {
                          
                      $pts = @filemtime($pic);
                          
                      $pic $pic.'?'.time();

                          if (
                      $t <> '0') {
                              if (
                      $t != $pts) {
                                  return 
                      '1';
                              }
                              else {
                                  return 
                      '0';
                              }
                          }
                          if (
                      $t == '0') {
                              return 
                      "<img src=\"$pic\"><input type=\"hidden\" id=\"ts_pic\" value=\"$pts\">";
                          }
                      }

                      sajax_init();
                      sajax_export("checkpic");
                      sajax_handle_client_request();
                      ?>
                      <html>
                      <head>
                      <title>freshmaker</title>
                      <script>
                      <?php sajax_show_javascript(); ?>
                      function set_result(result) {
                          document.getElementById("z").innerHTML = result;
                      }
                      function do_check(result) {
                          if (result == '1') {
                              x_checkpic(0, set_result);
                          }
                          to = setTimeout("refreshPic()", 3000);
                      }
                      function refreshPic() {
                          var ts = document.getElementById("ts_pic").value;
                          x_checkpic(ts, do_check);

                      }
                      </script>
                      </head>
                      <body onload="refreshPic();">
                      <div id="z"><input type="hidden" id="ts_pic" value="1234567890"></div>
                      </body>
                      </html>
                      bush
                      Zuletzt geändert von Bushmasta; 22.04.2006, 19:22.

                      Kommentar

                      Lädt...
                      X