itaeng

Visualizzare il testo di una pagina durante il caricamento

Perdona il titolo  nebuloso, ma non so come riassumere meglio questa piccola ma utie pillola di codice.

Come al solito parto dalla necessità: ho creato una piccola applicazione che per via dei lunghi tempi di esecuzione rende difficile capire cosa sta facendo, fino a quando non ha terminato l'ultimo script. Il che può essere ragionevole fino a quando lo script richiede pochi secondi, ma quando ne richiede alcune decine... è decisamente troppo.

Da qui la necessità di stampare sullo schermo un resoconto per ogni operazione completata, per poi fare il resoconto finale al termine del tutto. Più facile a dirsi che a farsi, probabilmente. Per me di sicuro lo era finché non mi sono imbattuto in questa piccola chicca

function echo_live($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();
}

Queste poche righe di codice fanno proprio ciò che mi serve: stampano una stringa a video immediatamente, senza aspettare il "termine dei lavori". Figata. Quello che è più importante è che, in sostanza, invece di fare un "echo" dell'informazione che voglio mostrare a video, basta utilizzare la nuova funzione "echo_live", senza dover riscrivere pressoché nulla nel codice.

Comodo vero?