Ralf: Browser

Hallo,

Wenn ich in einer Schleife per echo alle zahlen von 1 - 1000000000 im IE zeilenweise ausgebe, dann zeigt der Browser erst ab einer bestimmten Anzahl an Zeile was an.

z.B. ab 1000 zeilen wird zum ersten mal was angezeigt, dann läuft er die schleife weiter durch und gibt die nächsten 1000 zeilen im browser aus.

Wie ist das zu erklären? Kann man die Anzahl der Zeilen, ab wann der Browser was ausgeben soll einstellen?

Beim Beispiel mit den Zahlen von 1 - 1000000000  ausgeben lassen geht das ganze etwas schnell um zu erkennen das der Browser quasi erst eine gewisse Anzahl an Zeilen sammelt bis er sie anzeigt.

  1. echo $begrüßung;

    Wenn ich [...] per echo [...] ausgebe, dann zeigt der Browser erst ab einer bestimmten Anzahl [...] was an.

    Ich hab deinen Satz beim Zitieren mal etwas gekürzt. Damit wird er etwas allgemeiner, denn das von dir Beaobachtete tritt bei jeder Art von Ausgabe eines PHP-Scripts in Richtung Browser auf.

    Wie ist das zu erklären?

    Damit nicht wegen jedem Fitzelchen ein Datenpaket auf die Reise geht und ein Bestätigungspaket auf den Rückweg, wird die Ausgabe gepuffert, bis sich eine gewisse Datenmenge angesammelt hat.

    Kann man die Anzahl der Zeilen, ab wann der Browser was ausgeben soll einstellen?

    Mit flush() kann man den Webserver bitten, seinen Puffer in Richtung Client zu entleeren. Das klappt jedoch nicht in allen Server-Konstellationen (PHP als CGI im IIS hab ich als Sorgenkind in Erinnerung).

    echo "$verabschiedung $name";

    1. Tach auch.

      Mit flush() kann man den Webserver bitten, seinen Puffer in Richtung Client zu entleeren. Das klappt jedoch nicht in allen Server-Konstellationen (PHP als CGI im IIS hab ich als Sorgenkind in Erinnerung).

      Es sei angemerkt, dass teilweise (je nachdem, wie du die Daten ausgibst .. Plain Text, HTML-Tabelle, ...) die Browser auch noch puffern. Es kann also vorkommen, daß du dem Server per flush() angewiesen hast, die Daten zu senden, aber der Browser sie noch vorhält.

      Bis die Tage,
      Matti

      1. echo $begrüßung;

        Es sei angemerkt, dass teilweise (je nachdem, wie du die Daten ausgibst .. Plain Text, HTML-Tabelle, ...) die Browser auch noch puffern. Es kann also vorkommen, daß du dem Server per flush() angewiesen hast, die Daten zu senden, aber der Browser sie noch vorhält.

        Ja, das auch noch. Besonders beim Opera kann man das schön mitverfolgen. Wenn kein Content-Length-Header mitkommt sieht man ihn schonmal ein paar Bytes zählen, bevor er zur Ausgabe schreitet.

        echo "$verabschiedung $name";

    2. ok danke schonmal!!
       werd da etwas rumprobieren.

      Angenommen ich geb alles in der schleife immer sofort aus, dann geht das doch bestimmt extrem auf die performance, oder?

      »»PHP als CGI im IIS hab ich als Sorgenkind in Erinnerung

      was ist denn IIS?

      1. echo $begrüßung;

        Angenommen ich geb alles in der schleife immer sofort aus, dann geht das doch bestimmt extrem auf die performance, oder?

        Probier es aus. flush() schien mir bisher nur dann sinnvoll, wenn ich eine Art Fortschritt anzeigen wollte, z.B. bei der Bearbeitung großer Datenmengen.

        was ist denn IIS?

        Der Internet Information Server von Microsoft.

        echo "$verabschiedung $name";