Manu: Ausgabe Puffer deaktivieren...

Hallo zusammen,

ein Kollege, der nun auf der anderen Seite der Weltkugel weilt, hat hier bei einem größeren Insert (sagen wir 100000 Zeilen) nach jeder 1000sten Zeile ein echo '.'; eingesetzt, um dem Benutzer wenigstens ein kleines bißchen Aktivität vorzugaukeln.

Im Browser werden jetzt die Punkte nicht nacheinander angezeigt, sondern nach einer kurzen Wartezeit gleichzeitig. Wie kann man das verhindern?

Gruß,
Manu

  1. flush();
    http://at.php.net/flush

    1. SUPER! Klappt! Danke!

      Gruß,
      Manu

  2. Moin!

    ein Kollege, der nun auf der anderen Seite der Weltkugel weilt, hat hier bei einem größeren Insert (sagen wir 100000 Zeilen) nach jeder 1000sten Zeile ein echo '.'; eingesetzt, um dem Benutzer wenigstens ein kleines bißchen Aktivität vorzugaukeln.

    Im Browser werden jetzt die Punkte nicht nacheinander angezeigt, sondern nach einer kurzen Wartezeit gleichzeitig. Wie kann man das verhindern?

    Das kann man allgemein gar nicht verhindern.

    Nur in speziellen Fällen, in denen das Vorhandensein von cachenden oder datensammelnden Zwischenspeichern zwischen Server und Client ausgeschlossen werden kann, weil man die gesamte Netzwerkstrecke in eigener Regie betreibt, kann man was tun.

    Allerdings muß letztendlich dann doch auch der Browser mitspielen, und das zeichenweise Hereintröpfeln von Punkten direkt rendern - was er nicht unbedingt immer tut.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Danke für Deine Antwort Sven,

      flush() hat genau das gebracht, was ich gesucht hatte:

      for ($j = 0; $j < 1000000; $j++) {

      //hier passiert was

      if($bShowDetails) {
       if(($j%10000)==0)
        echo "<p>". date("d.m.Y H:i:s") ." <strong>". $j ."</strong></p>";flush();

      if(($j%100)==0) echo "<!-- bufferme -->.";flush();
      }
      }

      Das <!-- bufferme --> ist wohl für den IE nötig, der eine Mindestlänge vor dem Output erwartet...

      Gruß,
      Manu

      1. ...und zu schnell auf Abschicken geklickt...

        Mir ist alelrdings schon klar, dass echoing gerade während gleichzeitiger Benutzung von templates nicht wirklich das Gelbe ist. Ich hätte das Ganze initial wohl auch eher mit Ajax gelöst. Hier ging es aber um einen möglichst schnellen Workaround... Das hat jetzt ca. 1h gedauert, die andere variante hätte wohl wesentlich länger gebraucht...

        Gruß,
        Manu