Ankündigung

Einklappen
Keine Ankündigung bisher.

komplette ausgabe stoppen

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von Matthias959
    Glaub mir doch einfach, dass es mit PHP NICHT MÖGLICH ist!!!
    Wenn man das Problem nicht wirklich verstanden hat und/oder sich nicht wirklich auskennt, sollte man nicht am lautesten schreien.

    Man kann zwar in der Tat nur schwer etwas zurücknehmen, was man bereits an den Browser geschickt hat, aber man kann erst einen output-buffer füllen, und dessen Inhalt dann wegwerfen.

    Also am Anfang einmal ob_start() machen, damit alle Ausgaben in den OB statt an den Browser gehen, und mit ob_clean() kann man das Ding leeren.
    mod = master of disaster

    Kommentar


    • #17
      nun hab ich:
      PHP-Code:
      <?
      include('mysql.php');
      ignore_user_abort(); 
      ob_start();
      while(!connection_aborted())
      {
      $abfrage = "SELECT * FROM chat ORDER BY datum DESC";
      $ergebnis = mysql_query($abfrage);
      while($row = mysql_fetch_object($ergebnis))
          {
          echo "$row->msg
      ";  
      }
      sleep(1);
      ob_clean();
      }
      ?>
      nun hab ich eine leere seite (....)

      Kommentar


      • #18
        Tja, wenn man alles löscht, bleibt halt nix übrig.
        Vielleicht solltest du ob_clean() ein wenig gezielter anwenden.
        mod = master of disaster

        Kommentar


        • #19
          PHP-Code:
          <?
          include('mysql.php');
          ignore_user_abort(); 
          while(!connection_aborted())
          {
          $abfrage = "SELECT * FROM chat ORDER BY datum DESC";
          $ergebnis = mysql_query($abfrage);
          ob_start(); // <- dahin ?!
          while($row = mysql_fetch_object($ergebnis))
              {
              echo "$row->msg
          ";  
          }
          ob_clean();
          sleep(1);
          }
          ?>
          ich bin am ausprobieren, bekomm es aber nicht hin, also ob_start(); ist das, was er später löschen soll ? also ab da und ob_clean(); das ende, ab da löscht er, oder wie ? oder lösct er an dieser stelle, php.net hilft mir da irgendwie nicht so, könnteste vielleicht einmal gucken wo der harken an meinem skript ist, -> wäre seeehhhhrr nett.

          Kommentar


          • #20
            ob_start(): ab hier wird in den Puffer geschrieben, anstatt verschickt
            Bei Scriptende wird der Puffer automatisch verschickt, alternativ durch ob_flush() oder ob_end_flush().
            Man sollte übrigens nur einen OB starten, ausser man hat den alten OB vorher über ob_end_*() zugemacht.
            ob_clean() löscht den Inhalt des OB, ohne diesen zu beenden.

            Was Du im Moment machst, ist viele OBs aufzumachen und alles, was Du reinschreibst, direkt wieder zu löschen.
            In der besseren Version davor hattest Du einen OB, in den Du sachen immer reingeschrieben und direkt wieder gelöscht hast, bevor irgendwas damit passieren konnte.
            Und wenn ich deinem Script auf die Beine helfen soll, müsste ich wissen, was es denn tun soll.
            mod = master of disaster

            Kommentar


            • #21
              ich möchte:
              datenbank auslesen
              alles löschen
              datenbank auslesen
              alles löschen
              datenbank auslesen
              alles löschen
              ........
              wie ein reload

              Kommentar


              • #22
                Matthias959 hat Folgendes geschrieben:
                Glaub mir doch einfach, dass es mit PHP NICHT MÖGLICH ist!!!
                Wenn man das Problem nicht wirklich verstanden hat und/oder sich nicht wirklich auskennt, sollte man nicht am lautesten schreien.

                Man kann zwar in der Tat nur schwer etwas zurücknehmen, was man bereits an den Browser geschickt hat, aber man kann erst einen output-buffer füllen, und dessen Inhalt dann wegwerfen.
                Aber genau das möchte er doch nicht. Das hatten wir schon als Lösung.
                Sein Problem:
                Er möchte etwas an den Browser schicken, der Text oder was auch immer soll eine bestimtme Zeit (1 Sekunde) im Browser erscheinen und dann wieder gelöscht und durch etwas anderes ersetzt werden. Und das alles im gleichen Script.
                Und das wird wohl mit PHP nicht möglich sein ohne Reload...

                ich möchte:
                datenbank auslesen
                alles löschen
                datenbank auslesen
                alles löschen
                datenbank auslesen
                alles löschen
                ........
                wie ein reload
                Und wo ist dann das Problem beim neu laden?
                Datenbank auslesen -> Ausgabe -> Reload -> Alles Löschen -> Datenbank auslesen -> Ausgabe -> Reload ...

                Wobei ich auch nicht verstehe wie du nach dem Datenbanklöschen nochmal alles auslesen willst.

                Kommentar


                • #23
                  ich möchte einen virtuellen stream erzeugen, der traffic spart aber trotzdem immer aktuell ist -> der thread hat mich überzeugt
                  http://www.phpfriend.de/forum/viewto...hlight=vstream
                  und das das ganze klappt beweist:
                  http://www.phpfriend.de/forum/ftopic48382.html
                  und: http://www.phpfriend.de/forum/ftopic48397.html

                  Kommentar


                  • #24
                    Verdammt... ok, für sowas bieten sich wohl ein Reload oder Ajax an.
                    mod = master of disaster

                    Kommentar


                    • #25
                      Zitat von notyyy
                      ich möchte einen virtuellen stream erzeugen, der traffic spart aber trotzdem immer aktuell ist
                      Bei den funktionierenden Beispielen werden aber Daten angehängt und nicht ausgetauscht.
                      mod = master of disaster

                      Kommentar


                      • #26
                        reload will ich nicht, Ajax hört sich ganz gut an, jedoch wo lern ich den umgang damit ?
                        google zeigt mir nur kleinere beispiele oder seiten wie Ajax ist toll. und das wars...

                        Ajax ist so ein gemisch aus vielen und keine wirkliche eigene sprache oder, sondern nur eine methode ihne reload kontakt zum mysql server zu halten ?
                        Vstream mit php hört sich doch aber auch geil an ?

                        EDIT
                        Bei den funktionierenden Beispielen werden aber Daten angehängt und nicht ausgetauscht.
                        > genau da liegt mein problem, deshalb dachte ich mir, alles löschen und auslesen ist wie dranhängen ?

                        Kommentar


                        • #27
                          ich möchte einen virtuellen stream erzeugen, der traffic spart aber trotzdem immer aktuell ist
                          sicher, dass ein virtueller Stream traffic spart im vergleich zu z.B. einem Reload alle 2, 3 Sekunden?

                          Vorausgesetzt es würde funktionieren wie du dir das denkst:
                          Die Datenbankabfrage hast du ja so oder so und die Daten werden in entsprechenden Intervallen auch an den Browser gesendet. Kommt doch im Endeffekt auf den gleichen Traffic raus oder nicht?


                          Bei den funktionierenden Beispielen werden aber Daten angehängt und nicht ausgetauscht.
                          > genau da liegt mein problem, deshalb dachte ich mir, alles löschen und auslesen ist wie dranhängen ?
                          Das Problem beim löschen ist, dass dafür PHP aktiv auf den Client zugreifen müsste was es aber nicht kann. PHP kann nur Daten an den Client senden weshalb die Daten nur angehängt werden können. Alles was beim Client ankommt kann nicht mehr durch PHP nachträglich verändert werden.

                          Kommentar


                          • #28
                            Zitat von Waq
                            Zitat von Matthias959
                            Glaub mir doch einfach, dass es mit PHP NICHT MÖGLICH ist!!!
                            Wenn man das Problem nicht wirklich verstanden hat und/oder sich nicht wirklich auskennt, sollte man nicht am lautesten schreien.

                            Man kann zwar in der Tat nur schwer etwas zurücknehmen, was man bereits an den Browser geschickt hat, aber man kann erst einen output-buffer füllen, und dessen Inhalt dann wegwerfen.

                            Also am Anfang einmal ob_start() machen, damit alle Ausgaben in den OB statt an den Browser gehen, und mit ob_clean() kann man das Ding leeren.
                            ICh habe dsa Problem sehr wohl verstanden, aber nur auf PHP ebene ist es halt nicht möglich eine Ausgabe die bereits erfolgt ist rückgängig zu machen.

                            Meine Idee wäre halt, das du per JavaScript und document.write() immer denn aktuellen Text schreibst.

                            Kommentar


                            • #29
                              Wobei Javascript auch nicht eine optimale Lösung wäre für das was er vor hat.
                              Wenn die Quelldatei immer weiter gefüllt wird und nur Javascript dafür sorgt, dass ein bestimmter Teil angehängt wird, hat er z.B. nach einer Stunde laufzeit eine HTML Datei mit hunderttausenden von Zeilen die bestimmt den Browser irgendwann in die Knie zwingt.
                              Sorry, aber außer einem schnellen Reload der Seite fällt mir nichts sinnvolles zur Problemlösung ein.

                              Kommentar


                              • #30
                                nochmal zurück zu Ajax, gibt es dafür irgendwelche tutorials oder sonstiges ?

                                Kommentar

                                Lädt...
                                X