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

    Ridurre tempi move_uploaded_file

    Nel mio script ho bisogno di inviare fino a 10 file molto grandi(dai 20 ai 50 mb) sul server,una volta sul server eseguo altre lavorazioni e poi li elimino , il tempo per eseguire il move_uploaded_file() è molto grande come posso far sì che una volta caricati non debba spostarli per lavorarci sopra ?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Dovrebbe essere sufficiente usare l'array superglobale $_FILES per riferirsi al file da manipolare, in tal modo dovresti lavorare sul file temporaneo caricato.

  3. #3
    Mi spiego meglio , devo inviare file sul server e da li mandarli a un servizio di storage esterno è possibile alla fine del caricamento dare un echo upload corretto e poi eseguire tutto il resto senza dover rimanere su quella pagina ?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ma quindi in pratica devi fare 2 upload, uno verso il tuo server e uno verso il server cloud, è per quest'ultimo che ti serve il move_uploaded_file()?
    Dovresti mettere l'echo subito prima del move_uploaded_file() e mandare la stringa al browser con ob_flush(), ma non è detto che funzioni.

    Si stava parlando di questa cosa qui

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Se il caricamento sul cloud può essere fatto in un secondo momento, potresti pensare di spezzare il processo in due fasi:

    1. Caricamento file in locale
    2. Uno script php lanciato tramite cron (magari in un orario dove il server è meno impegnato) che prende i file caricati in giornata e li carica sul cloud

  6. #6
    Quote Originariamente inviata da boots Visualizza il messaggio
    Se il caricamento sul cloud può essere fatto in un secondo momento, potresti pensare di spezzare il processo in due fasi:

    1. Caricamento file in locale
    2. Uno script php lanciato tramite cron (magari in un orario dove il server è meno impegnato) che prende i file caricati in giornata e li carica sul cloud
    Anche il tempo per il semplice move_upload_file con file grandi è davvero molto lento , avevo pensato a farlo con ajax ma non cambia niente se non che non ricarico la pagina . Ho provato a forzare la risposta di ajax dando questo comando :
    codice:
    ignore_user_abort(true);
    set_time_limit(0);
    
    
    ob_start();
    
    
    // do initial processing here
    echo 'File Inviati';
    
    
    header('Connection: close');
    header('Content-Length: '.ob_get_length());
    ob_end_flush();
    ob_flush();
    flush();
    In effetti la risposta è un minimo più veloce ma ho il browser comunque bloccato fino alla fine dello script.
    Soluzioni ?

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Il fatto è che non è la move_upload ad impiegarci tempo (per spostare un centinaio di mb ci metterà qualche secondo), ma l'upload vero e proprio. e per quello non ci puoi fare niente.
    A questo punto cerca uno script per l'upload via ajax che mostri una barra di progresso...e cmq devi sempre aspettare che finisca

  8. #8
    Quote Originariamente inviata da boots Visualizza il messaggio
    Il fatto è che non è la move_upload ad impiegarci tempo (per spostare un centinaio di mb ci metterà qualche secondo), ma l'upload vero e proprio. e per quello non ci puoi fare niente.
    A questo punto cerca uno script per l'upload via ajax che mostri una barra di progresso...e cmq devi sempre aspettare che finisca
    Ho messo una percentuale di progressione upload e in realtà il move_uploaded è molto lento anche un paio di minuti,oltre a quello inserisco un record nel db ( non penso sia questo a rallentare) e per 300/400mb ci mette un paio di minuti

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, giusto per curiosità, prova a mettere questo:

    Codice PHP:
    $time_start microtime(true);
    ...
    il tuoi move_upload_file...
    $time _end microtime(true);

    $total_time $time_end $time_start;
    echo 
    $total_time
    Dovresti vedere così quanti secondi impiega a spostare i file

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.