Off-Topic > In piazza

Consiglio su flusso dati TCP e PHP

<< < (3/5) > >>

rccrcc:
Grazie ragazzi, problema risolto. Ignoravo l'esistenza di queste istruzioni, molto utili in un sacco di applicazioni.
Posto il risultato finale semplificato, può sempre tornare utile a qualcuno. Ho aggiunto un semplice javascript in cui mi visualizza soltanto l'ultimo valore, quindi mi da il valore in tempo reale  ;)
A BUON RENDERE!!!  ;D


--- Codice: ---<html>
<head>
    <title>Temperatura</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <link rel="SHORTCUT ICON" href="icona.ico">
    <script type="text/javascript">
        function dati_up(temp) {
           document.getElementById("lblTemp").innerHTML = temp +" °C";
        }
    </script>
</head>
<body>

<span style="font-family:Tahoma; size: 10px; color:#000066">&nbsp;&nbsp;TEMPERATURA:
<label id="lblTemp">0 °C</label></span>

<?php
$ip ="127.0.0.1";
$porta = "9999";
$comando = "TEMPERATURA\n";
$fp = fsockopen($ip, $porta, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, $comando);
    while (!feof($fp)) {
        set_time_limit(0); //evita il timeout
        $dati= fgets($fp, 128);
        echo "<script type='text/javascript'>dati_up($dati);</script>"; 
        ob_flush(); 
        flush();
    }
    fclose($fp);
}
?>

--- Termina codice ---

antonino.spampinato:
prego.
modifica script tyle in type.
ps. in basso.

Daniele8787:
Type.

Giulio:
flush() funziona quindi :)

Daniele8787:
Boh, io l'ho provato in tutti i modi e ti assicuro che non funziona. Ho anche copiato e incollato i codici delle guide che hai incollato, ma non ne funziona nessuno, almeno su windows e sugli altri che ho provato. I dati sono visualizzati tutti insieme alla chiusura del php, come sempre.


--- Citazione ---Several servers, especially on Win32, will still buffer the output from your script until it terminates before transmitting the results to the browser.
--- Termina citazione ---

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

e infatti dice "especially" e non "only" perchè infatti io l'ho provato anche su servers non windows, e da sempre lo stesso risultato. Ho anche provato questo codice:


--- Codice: ---<?php

function echo_flush($txt){
    //inizializzazione del buffer per l'output
    if (ob_get_level() == 0) ob_start();
    echo $txt;
    //per Chrome e Safari si deve aggiungere questa istruzione
    print str_pad('',4096)."\n";
    //invia il contenuto al buffer
    ob_flush();
    flush();
}


for ($i =0; $i <=10; $i++) {
echo_flush('ciao');
sleep(5);
}

?>
--- Termina codice ---

ma niente.

Navigazione

[0] Indice dei post

[#] Pagina successiva

[*] Pagina precedente

Vai alla versione completa