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

    output prima della fine dello script php

    Ciao a tutti sto realizzando un sito che tra ha una pagina con uno script che richiede molto tempo (copia di un file da server remoto a server locale parecchio pesante). il cuore della pagina è il seguente
    Codice PHP:
    <?php
    echo "stiamo avviando il trasferimento, attendi fino al completamento";

    $remotefile$_POST['fileremoto'];
    SCRIPT CHE COPIA IL FILE

    echo "file trasferito";
    ?>
    il problema sta nel fatto che tutto l'output (in questo caso i 2 echo) vengono stampati una volta che lo script ha concluso il lavoro mentre io vorrei facesse cosi:
    viene stampato il primo echo
    viene copiato il file
    viene stampato il secondo echo

    non è un problema di timeout o altro perché se aspetto la fine dello script vengono stampati entrambi gli echo e il file viene copiato correttamente però vorrei appunto che il primo echo venisse stampato subito
    Grazie a tutti
    Ultima modifica di myweb77myweb77; 19-07-2014 a 11:56

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    il contenuto della pagina viene inviato al client solo quando lo script PHP è terminato.

    puoi risolvere con ajax
    No

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questi come sono.

    File : test318.php
    Codice PHP:
    <?php 
    if (isset($_GET['action'])) {
     
    $action $_GET['action'];
    } else {
     
    $action "todo";
    }
     
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function myfunction() {
     document.getElementById('pippo').innerHTML = 'Stiamo avviando il trasferimento - prego attendere';
    }
    //-->
    </script>
    </head>
    <body>
    <hr />
    <div id="pippo"><?php 
     
    if ($action == 'done') {
      print 
    "File trasferito";
     } else {
      print 
    "&nbsp;";
     }
     
    ?>
    </div>
    <hr />
    <form action="test318b.php" method="post" onsubmit="myfunction();">
     <input type="submit" name="Submit" value="Submit" />
    </form>
    </body>
    </html>
    File : test318b.php - é importante che il file non scriva nulla a video visto che si usa header.
    Codice PHP:
    <?php 
     
    for ($i=1;$i<=1000;$i++) {
      for (
    $j=1;$j<=5000;$j++) {
      
    //---- per simolare un'attesa
     
    }
     }
     
    header('Location:test318.php?action=done');
     exit;
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.