Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [PHP] Visualizzare output durante esecuzione script

    ciao,
    mi sono creato uno script PHP che effettua il parsing di un documento XML, e salva i dati nel DB. L'esecuzione dello script può essere parecchio lunga (anche alcuni minuti) perchè durante l'esecuzione vengono create e salvate su filesystem parecchie thumbnails.

    mi sarebbe piaciuto visualizzare il progresso nell'esecuzione dello script (ad esempio i nomi delle thumbnails create), qui però mi sorge un dubbio: se nello script inserisco delle echo $thumbnail; questo output -ovviamente- viene mostrato solo alla fine dell'esecuzione dello script.

    mi è capitato di vedere script che, invece, stampavano in tempo reale informazioni sull'esecuzione dello script stesso. per esempio un motore di ricerca, "sphider", che durante la fase di indicizzazione stampa i nomi delle pagine indicizzate.

    come possono aver ottenuto questo effetto? ajax? (ho provato a guardare il codice, ma non ci ho capito niente :-D)

    conoscete qualche guida che mi possa spiegare come fare una cosa del genere?

    grazie mille!

  2. #2
    Se vuoi farlo lato server ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/flush
    http://www.php.net/ob_flush

    In alternativa, non puoi semplicemente spezzare l'esecuzione della pagina ed effettuare automaticamente il refresh ogni volta che hai completato una fase (es. dopo X thumbnail)?

  3. #3
    Senza bloccare il flusso puoi farlo "addormentando" il PHP
    Codice PHP:
    echo 'ciao';
    sleep(2);
    eho 'marco!'
    http://it.php.net/manual/it/function.sleep.php
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  4. #4
    grazie a entrambi per le risposte.
    con la sleep non mi funziona: viene stampato sempre tutto alla fine.

    non avendolo mai fatto, non ho ben capito come si possa spezzare l'esecuzione della pagina.
    comunque appena ho tempo provo con la funzione flush.

    ciao!

  5. #5
    Riesumo la discussione perchè ho scoperto un problema.

    Allora intanto diciamo che con la flush funziona alla perfezione. Per la cronaca: basta richiamare la funzione flush() ogni qual volta si vuole che l'output venga inviato al browser. Quindi qualcosa di questo tipo:

    codice:
    echo "testo";
    flush();
    Il problema è che in locale funziona alla grande. Il mio script parsa il file XML e mano a mano che nuove thumbnails vengono create l'utente viene informato con un nuovo messaggio a video.

    Se invece lo eseguo da remoto è come se le funzioni flush() non ci fossero: la pagina carica per diversi minuti e alla fine mi venogno mostrate le thumbnails create, tutte assieme.

    Cosa potrebbe essere a generare questo inconveniente?
    Non credo si tratti della configurazione del webserver, perchè è lo stesso a cui mi connetto in locale dall'ufficio, e in remoto da casa...

    accetto suggerimenti.
    grazie! ;-)

  6. #6
    no idea?

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.