2016-05-03 16 views
-3

Ich schreibe ein PHP-Skript, aber stecken auf der flush()-Funktion fest. Das ist mein Skript:Warum führt flush() keine Daten direkt aus? php

<?php 
    echo "1"; 
    flush(); 
    sleep(5); 
    echo "2"; 
?> 

ich mein Skript will die ‚1‘ senden, dann 5 Sekunden warten, dann senden Sie die ‚2‘. Stattdessen wartet das Skript 5 Sekunden und sendet dann '12'. Ich suche nach einer Antwort für die letzten paar Stunden, aber ich kann keine finden, die für mich funktioniert.

+0

was zu tun versuchen Sie wirklich? klingt wie Sie mehr Client-Side-Code benötigen. Wie es aussieht, ist dies nicht am besten mit einem serverseitigen Ansatz –

+1

Ich denke, Sie nie auf PHP-Handbuchseite für Flush vorher suchen – Chay22

Antwort

0

Sie müssen auch ob_flush() verwenden, wenn Sie es mit irgendeiner Art von Webserver verwenden. Und ob_flush muss immer vor flush() kommen.

So würde Ihr Code sein:

<?php 
    echo "1"; 
    ob_flush(); 
    flush(); 
    sleep(5); 
    echo "2"; 
?> 
5

Zum ein

flush() nicht in der Lage sein, das Pufferschema des Webservers außer Kraft zu setzen, und es hat keine Auswirkungen auf dem clientseitige Pufferung im Browser.

Zweitens

Es berührt auch nicht die PHP-User-Space Ausgabepufferung Mechanismus. Das bedeutet, dass Sie sowohl ob_flush() als auch flush() aufrufen müssen, um die ob-Ausgabepuffer zu leeren, wenn Sie diese verwenden.

http://php.net/manual/en/function.flush.php

Am allerwenigsten, versuchen ob_flush() auch anrufen.