Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969

    Output al browser durante l'elaborazione

    Ho fatto un programmino che impiega molti secondi, infatti ho settato set_time_limit(0);
    Vorrei che durante l'elaborazione mandasse l'output al browser.
    Esempio:

    codice:
    for( $i=0; $i<1000; $i++ ){
    ... molte operazioni
    echo '
    Riga ',$i;
    }
    Nel codice di esempio vorrei che il browser vedesse

    Riga 1
    Riga 2
    ...


    durante l'elaborazione (riga per riga). In poche parole vorrei evitare che si vedesse tutto l'output alla fine.
    Ho provato col le funzioni ob_ ma senza risultato. Forse c'è da settare un header particolare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    hai provato con flush?
    http://it.php.net/manual/it/function.flush.php
    è stata aperta una discussione simile un po' di tempo fa e mi ricordo che avevano risolto con flush, spero di non sbagliare...

    ciao

  3. #3
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Si, ho provato ma non è funzionato.
    Provo a cercare la discussione che hai citato.

  4. #4
    php prima interpreta poi invia ... se lo script impiega tanto ha qualcosa che non va (poco ottimizzto) oppure vorrebbe una suddivisione di mole dati
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141

  6. #6
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Originariamente inviato da andr3a
    php prima interpreta poi invia ... se lo script impiega tanto ha qualcosa che non va (poco ottimizzto) oppure vorrebbe una suddivisione di mole dati
    Come fai a dire che ha qualcosa che non va se non sai neanche cosa fa???

    Avevo già provato con flush() ma non funzionava. Forse il problema è la tabella, ho appena letto che explorer non stampa finche la tabella o i div non sono chiusi.
    Provo a togliere la tabella e vediamo.

  7. #7
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Era proprio come avevo detto, la tabella bloccava l'output su Explorer.
    Ora fa proprio come volevo io.
    Per chi fosse interssato a questa cosa post un esempio:

    codice:
    ob_start();
    for( $i=0; $i<1000; $i++ ){
    ... molte operazioni
    echo '
    Riga ',$i;
    ob_flush(); 
    flush();
    }
    Se ci sono tabelle o div, Internet Explorer non le stampa a video fino a quando i tag sono chiusi, quindi se vi serve una cosa del genere non usate le tabelle e i div.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    1,141
    Scusa la domanda stupida, ma tu dici che, per esempio, fare:
    Codice PHP:
    echo "<div>";
    for( 
    $i=0$i<50000$i++ ){
    echo 
    "<div>Riga a".$i."</div>";
    ob_flush(); 
    flush();
    }
    echo 
    "</div>"
    o come hai fatto te cambia?
    Perchè a me funzionano entrambi allo stesso modo...

    Mi potresti fare un esempio di quello che non funzionava a te xfavore?( giusto per capire )

    Grazie1000.

  9. #9
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Prova con table:

    codice:
    echo "<table><tr><td>"; 
    for( $i=0; $i<50000; $i++ ){ 
    echo "<div>Riga a".$i."</div>"; 
    ob_flush();  
    flush(); 
    } 
    echo "</td></tr></table>";
    Che browser hai?

  10. #10
    Originariamente inviato da Teuzzo
    Come fai a dire che ha qualcosa che non va se non sai neanche cosa fa???


    Originariamente inviato da Teuzzo
    Ho fatto un programmino che impiega molti secondi
    questa affermazione in locale non ha senso poichè se ci metti tanto il PHP o il server stà lavorando presumibilmente troppo, di qui la mia risposta che non pensava (errore mio) stessi testando on-line dentro una tabella.

    Il consiglio, a questo punto, è di leggere bene tutta la pagina, commenti compresi, poichè il comportamento non è sempre quello atteso.

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

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.