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

    controllo download tramite php

    Salve a tutti,
    ho un piccolo problema, vorrei verificare l'avvenuto download e salvarlo in un db mysql, non sono sicuro che si possa fare tramite php e in questo caso vorrei sapere se ho alternative.

    Ho cercato per diversi giorni in internet e ho trovato 2 metodi diversi:
    Il primo:
    codice:
    while(!feof($file)) {
            $buf = fread($file, $download_rate);
            print $buf;
            $bytesSent += strlen($buf);
    }
    fclose($file);
    if($bytesSent == $filesize)
    {
            //download complete
    }
    Il secondo:
    codice:
    register_shutdown_function('shutdown');
    function shutdown()
    {
        global $bytesSent;
        global $filesize;
        if($bytesSent == $filesize){ /* download completato */ }
        else{ /* download fallito */ }
    }
    Entrambi non funzionano perchè lo script viene eseguito in un tempo breve e quindi risulta inviato tutto il file entro pochi attimi dopo l'avvio del downlad.

    Come posso fare a controllare l'avvenuto download e salvarlo nel db tenendo conto di eventuali interruzioni?

    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    La garanzia che il download si è concluso te la puo dare solo il client, quindi direi che al massimo dovresti fare uno script con javascript (o meglio ancora usare JAVA) che a download finito lanci una chiamata AJAX sul server per scrivere nel DB.

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  3. #3
    Innanzitutto ti ringrazio per la risposta in realtà una chiamata ajax fatta da js o java non mi convince, innanzitutto perchè il client dovrebbe aver abilitato js o installato java inoltre non è detto che il download avvenga tramite browser se dovesse avvenire tramite un download manager o tramite il comando wget?
    Capisco che lato server non si può avere la certezza dell'avvenuto download ma a me basterebbe avere la conferma che tutti i dati siano stati inviati, mentre gli script php vengono eseguiti all'istante e se un download di 1ora viene interrotto dopo 10 secondi lo registra comunque.
    Qualsiasi idea è ben accetta...

  4. #4
    Quote Originariamente inviata da las Visualizza il messaggio
    La garanzia che il download si è concluso te la puo dare solo il client
    Come ti ha già scritto las, non esiste un modo, in puro php, per verificare se un file è stato inviato con successo.
    L'unica soluzione (funzionante per la stragrande maggioranza dei browser) è quella di utilizzare javascript (che non necessita di interpreti esterni al browser).


    PS: Tra l'altro, se lo script restasse in esecuzione, per tutto il tempo del download, un simile codice potrebbe funzionare solo su particolari configurazioni: in generale, sulla maggior parte degli hosting il tempo massimo di esecuzione non supera il minuto (al superamento di questo limite, lo script viene "ammazzato").
    Experience is what you get when you don’t get what you want

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Con java dovresti risolvere verificando con js che sia istallato (permettendo cosi il download) cosi contestualmente verifichi che anche js sia attivo (problema che potresti avere solo con vecchi browser) una soluzione solo javascript non mi risulta possibile perché non può interrogare le cartelle del S.O.
    Un'altra soluzione e creare un programma in c/c++ un eseguibile che monitorizzi il download
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    una soluzione solo javascript non mi risulta possibile perché non può interrogare le cartelle del S.O.
    E infatti hai ragione... ho detto una cavolata. Ho realizzato un sistema simile (senza il controllo dell'avvenuto download) in Ajax tempo fa e sono andato un attimo nel pallone...

    Ho anche realizzato un sistema per l'upload di grossi file, con Java Web Start (e Zend Framework) che andava abbastanza bene (spezzettava i file i tanti pacchettini su cui veniva fatto un controllo di coerenza, e l'upload poteva anche essere interrotto e ripreso in un secondo momento), magari puoi fare qualcosa di simile... l'unica pecca è sempre l'interprete Java e l'avviso di sicurezza che viene visualizzato dagli utenti.
    L'unica alternativa a java è flash (che è addirittura più diffuso di java anche se andrà via via a morire).
    Experience is what you get when you don’t get what you want

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 © 2024 vBulletin Solutions, Inc. All rights reserved.