Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714

    Prima visualizzare e poi elaborare

    Salve,
    vorrei chiedervi il vostro aiuto su un piccolo problemino.

    Dunque ho due pagine, nella prima ho un pulsante e quando lo premo richiamo la seconda pagina che elabora uno script in PHP.

    Ora il caricamento della seconda pagina, puo' durare anche 20 secondi e io vorrei che quando premo il pulsante, subito mi faccia vedere un immagine (nella seconda pagina) e mentre la vedo elabora il codice PHP.

    In passato avevo creato una cosa simile usando FLUSH();
    ma ora sinceramente non ricordo piu' comefare.

    Grazie

  2. #2
    Forzare il flush è la cosa giusta.
    Ma non tutti i browser sono in grado di gestire la situazione.
    Alcuni potrebbero aspettare che il documento sia completato prima di elaborarlo.

    Non puoi fare cache? Sarebbe sicuramente una soluzione molto migliore (anche se non è detto che tu possa usarla nel tuo caso).

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    La domanda e' quanti flush() devo mettere e dove?

  4. #4
    Dovresti mettere

    ob_flush();
    flush();

    subito dopo l'immagine che vuoi visualizzare.

    Io, in genere, faccio così:

    preparo una semplicissima animazione flash (tipo quella che esce quando carica windows xp), la inserisco in un <div> e subito dopo ci metto ob_flush() e flush.
    Alla fine della pagina, dopo tutta la parte php, inserisco un javascript che setta a "none" la proprietà "display" del div contenente l'animazione.

    CIAU CIAU
    Se la vita ti sorride, ti sta prendendo per il cul0

  5. #5
    A proposito, a quanto ne so, se la pagina contiene una tabella che viene chiusa solo dopo la fine dell'elaborazione PHP, explorer visualizzerà l'output tutto insieme al termine del caricamento nonostante la presenza di flush().

    CIAU CIAU
    Se la vita ti sorride, ti sta prendendo per il cul0

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714
    Originariamente inviato da Bruttocattivo
    A proposito, a quanto ne so, se la pagina contiene una tabella che viene chiusa solo dopo la fine dell'elaborazione PHP, explorer visualizzerà l'output tutto insieme al termine del caricamento nonostante la presenza di flush().

    CIAU CIAU
    Ecco qual'era il problema!!!

    Cmq ti ringrazio ora va tutto con la tua soluzione

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    714

    Prova

    Originariamente inviato da Toniello
    Ecco qual'era il problema!!!

    Cmq ti ringrazio ora va tutto con la tua soluzione
    Ho fatto una piccola prova, dato che ancora si ostinava a non funzionare:

    questo e' il codice:

    <?php
    for ($i = 0; $i <= 10000; $i++)
    {
    echo($i."o
    ");
    ob_flush();
    flush();

    }
    ?>
    Mi stampa tutti i risultati alla fine e non 1 alla volta man mano che carica

  8. #8
    Dipende dal browser ma anche dalle impostazioni di apache.
    Ricordiamoci che php restituisce l'output ad apache e non direttamente al client.
    Quindi se su apache sono attivi i buffer (magari per la compressione) anche se fai flush da php viene tutto comunque catturato dai buffer al livello sottostante quindi non ottieni l'effetto che vuoi

    Per vedere questo potresti usare uno sniffer tipo ethereal così vedi subito se è vero che l'output va flushato oppure no

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

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.