2010-11-28 8 views
2

Ich versuche, meinen Besuchern in einer Schleife einen Inhalt in Echtzeit anzuzeigen. Problem ist, dass der Inhalt der Ausgabe hinzugefügt wird, anstatt durch die neue ersetzt zu werden. Hier ist ein Beispiel für einen Code, der von 10 bis 0 zählt. Die Ausgabe zeigt die gesamte Menge der Ergebnisse, anstatt rückwärts zu zählen. Ich meine, ich möchte nicht alle Zahlen sehen, nur jede Zahl, wie der Zähler geht.PHP-Echtzeit-Ausgabe des Inhalts

ob_end_flush(); 
     //start buffering 
     ob_start(); 

     echo str_pad ('', 1024); // minimum start for Safari 
     for ($i = 10; $i > 0; $i --) { 
      echo str_pad ("$i<br>\n", 8); 
      ob_flush(); 
      flush(); 
      sleep (1); 
     } 
     die(); 
+4

So funktioniert das HTTP. Sie senden nur eine einzige Antwort auf eine einzige Anfrage. – Gumbo

Antwort

0

Es könnte ein Trick oder etwas (dachte nur von einer oder zwei), aber die am besten geeignete Art und Weise zu tun, es mit einem Ajax-Auto-Update aus dem Browser ist. Wie this Musterbeschreibung.

0

Wir haben dies nicht in PHP, tatsächlich mit js. (mit Stacker Hilfe) können Sie die Zählung umkehren

Aber bin sicher, dass Sie adoptieren könnten, tut mir leid, wenn dies nicht Ihre Frage beantwortet.

Demo hier auf unserer Entwickler-Website < link>

Sie können auch (wieder können nicht relevant sein, ein div-Element Verwendung jquery zu aktualisieren)

2

Dies nicht allein mit PHP erreicht werden, wie zum Ändern Sie, was im Browser gerendert wird, erfordert einige Client-Seite Intervention.

Wie Sie diese Arbeitsteilung durchführen, hängt davon ab, was benötigt wird.

Wenn Ihr Code alles ist, dann wäre es viel besser, wenn Sie eine JS-Routine schreiben, um die Zahlen zeitgesteuert zu zählen.

Wenn PHP auf andere Weise benötigt wird, um die Zahlen zu generieren, dann muss entschieden werden, ob Sie die Generierung des Updates in mehrere PHP-Aufrufe aufteilen können oder ob es innerhalb des einzelnen PHP erfolgen soll Anruf aufgrund von Aktionen, die innerhalb dieses Anrufs stattfinden.

Wenn der erste, Sie können es trennen, was die ideale Situation ist - dann ist das Verfahren AJAX-Aufrufe einrichten, um aktualisierte Informationen regelmäßig abrufen.

Wenn letzteres und es von einer einzelnen Seite sein muss, dann muss die Verbindung geöffnet bleiben mit neuen Inhalten generiert.

In diesem Fall muss JS-Code damit umgehen, damit neuer Inhalt ersetzt wird. Jeder Code, der regelmäßig auf der Seite ausgeführt wird, kann nach neuen Inhalten suchen und entsprechend aktualisieren, oder es kann ein kleiner Trick gespielt werden, indem Code injiziert wird, der die Aktualisierung durchführt.

Senden von Inline <script> Inhalt, der das Update statt neue Anzeigeelemente führt funktioniert gut, wenn ein wenig unordentlich, wie der Browser das neue Element <script> erhält es ausgeführt wird. Nur so weiß ich, dass ein Push-Update auf eine Webseite ohne Plugins möglich ist.

Verwandte Themen