php echo - Ausgaben kommen erst zu Programmende

  • Hallo an alle,

    Raspberrypi mit Apache und PHP.
    Die Ausgaben auf die Webseite erfolgen nicht im Sekundentakt (durch sleep(1)), sondern alles auf einmal erst zum Programmende (bis dahin ist eine leere Seite zu sehen und der Browser ist am Laden). Warum ist dies so und läßt sich was dagegen machen?
    <?php
    $zahl=0;
    while ($zahl<8){
    echo $zahl . "<br>";
    $zahl++;
    sleep(1);
    }
    ?>
    Das Programm soll nur ein Beispiel für das Verhalten sein. Wollte bei Signaländerungen am GPIO jeweils weitere Ausgaben auf die Webseite senden. So kommt jetzt die ganze Zeit nichts und wenn das Programm durch ist, die Ausgabe des ganzen Ablaufs auf einmal.

    Gruß und danke vorab.

  • Hi,
    ich empfehle Dir Dich erst mal mit den Grundlagen dynamischer Web-Seiten-Programmierung mit PHP zu beschäftigen.
    Der Ablauf der Kommunikation Browser <-> Server ist da auch ganz hilfreich.
    So wird das jedenfalls nix ...
    cu,
    -ds-

  • ...das liegt daran da erst alles in einen Puffer geschrieben wird und erst nachdem alles abgearbeitet wurde oder die Puffer voll ist, ausgegeben...

    Man kann es so einstellen das der Puffer sofort geleert wird und die Ausgabe somit sofort erfolgt:

    [code=php]
    <?php
    @ob_implicit_flush(true);
    @ob_end_flush();

    $zahl=0;
    while ($zahl < 8) {
    echo $zahl . "<br/>\n";
    $zahl++;
    sleep(1);
    }
    ?>
    [/php]
    @ unterdrückt eine mögliche Rückgabe

    Demo: http://RaspberryPi.roxxs.org/test/p.php


    PS: Auch wenn es in PHP nicht zwingend erforderlich ist sollte man trotzdem Einrückungen verwenden damit sich der Code besser lesen/entziffern/zuordnen lässt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!