2017-02-07 1 views
1

ag.phpWie vorherige Ausgabe löschen und Echo in php

<?php 
ignore_user_abort(true); 
set_time_limit(0); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
$i=0; 
while(1){ 
echo $i; 
$i++; 
ob_flush(); 
flush(); 

    if (connection_aborted()){ 
     break; 
    } 

    usleep(1000000); 
} 

Ajax:

var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    console.log(xhttp.readyState+" "+xhttp.status); 
    if (xhttp.readyState === 3 && xhttp.status ===200) { 
     console.log(xhttp.responseText+"\n"); 

     } 
    }; 
    xhttp.open("GET", "ag.php", true); 
    xhttp.send(); 

hallo, bei Temperaturen oberhalb von Code, ich möchte eine dauerhafte Verbindung mit PHP und Echodaten machen in während blocken in 1 Sekunde Intervall und Daten kommt Browser so;
...
aber ich möchte Echodaten-Browser wie; ...
konnte es aber nicht achive so fand ich diese [How to clear previously echoed items in PHP über meine Frage, aber nicht genau das, was ich will, denke ich. jemand weiß, gibt es eine Möglichkeit, vorherige echo Daten zu leeren/entfernen? ist es möglich? Hilfe bitte.

+0

verwenden div oder nicht? –

+0

Anzeige in console.log –

+0

Ihr PHP-Code tun, was Sie wollen (mit Ausnahme der 'ob_flush()', die fehlgeschlagen, weil 'ob_start()' nicht aufgerufen wurde). Es ist der Javascript-Code, der die vollständigen Antwortdaten zu behalten scheint, was nicht überraschend ist. Vielleicht kann es nach jedem Lesen auf eine leere Zeichenfolge (oder Null) zurückgesetzt werden. –

Antwort

1

Verwendung substr()

 var xhttp = new XMLHttpRequest(); 
     var lastResponse = ''; 
     xhttp.onreadystatechange = function() { 
      //console.log(xhttp.readyState+" "+xhttp.status); 
      if (xhttp.readyState === 3 && xhttp.status ===200) { 

       var currentAnswer = xhttp.responseText.substr(lastResponse.length); 
       lastResponse = xhttp.responseText; 
       console.log(currentAnswer+"\n"); 

      } 
     }; 
     xhttp.open("GET", "ag.php", true); 
     xhttp.send(); 
1

Vielleicht ist ob_clean das, was Sie suchen.

void ob_clean (void) 
This function discards the contents of the output buffer. 

This function does not destroy the output buffer like ob_end_clean() does. 

The output buffer must be started by ob_start() with PHP_OUTPUT_HANDLER_CLEANABLE flag. Otherwise ob_clean() will not work.