IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Enregistrer volume téléchargement


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 112
    Points : 75
    Points
    75
    Par défaut Enregistrer volume téléchargement
    Bonjour à tous,

    Voilà, j'utilise la portion de code ci-dessous afin que les visiteurs de mon site puissent télécharger leurs fichiers. J'aimerais pouvoir, pour chaque téléchargement, enregistrer le volume téléchargé par le visiteur et l'enregistrer dans la base MySQL.
    Le soucis avec le code ci-dessous, c'est que si le visiteur à télécharger entiérement le fichier ou pas, rien ne s'enregistre dans la base.

    Quelqu'un à-t-il une idée du pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    // On prépare l'enregistrement du quota ****************
        $NbOctectsTotal = 0;
     
      if(preg_match('#HTTP/1.1 200 OK#', $head) or preg_match('#HTTP/1.1 302 Found#', $head) or preg_match('#HTTP/1.1 206 Partial Content#', $head))
      {
      	header($head);
     
      while (!feof($sock) and $cabeza = fgets($sock) and preg_match('#.+:.+#', $cabeza)) 
      {
       header($cabeza);
      }
      header('Content-Disposition: attachment; filename="'.$nomdufichier.'"');
     
      while (!feof($sock) && !connection_aborted())
      {
      $NbOctetsTotal += 8192;
      echo fread($sock, 8192);
        @flush();
      @ob_flush();
      }
      $status = (!connection_aborted());
      fclose($fp);
      $VolumeDownload += ($NbOctectsTotal / 1000);
      set_magic_quotes_runtime(get_magic_quotes_gpc());
    // Enregistrement du volume téléchargé
      $query = "UPDATE membres SET Volume_Download = ".$VolumeDownload." WHERE IDMembres = '".$idmembre."' LIMIT 1;";
      mysql_query($query);
    // Selon si la connection est interrompue ou pas, on enregistre l'état du téléchargement 
      if ($status) {
      $query = "UPDATE telechargements SET Resultat = 'Ok' WHERE IDMembres = '".$idmembre."' AND IDLiens = '".$idlien."' LIMIT 1;";
      mysql_query($query);
    } else {
      $query = "UPDATE telechargements SET Resultat = 'KO -->".$VolumeDownload."' WHERE IDMembres = '".$idmembre."' AND IDLiens = '".$idlien."' LIMIT 1;";
      mysql_query($query);
    }
      mysql_close($db);
    Je suis vraiment coincé, cela fait 3 jours que je cherche, merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Comment fais-tu pour intercepter l'arrêt de la connection ?

    As-tu vérifié les retours de tes requêtes ? Tu pourrais faire comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $res = array(
      'update_membre' => array(),
      ...
    );
     
    ...
     
    $query = "UPDATE membres SET Volume_Download = ".$VolumeDownload." WHERE IDMembres = '".$idmembre."' LIMIT 1;";
    $res['update_membres'][] mysql_query($query);
     
    ...
     
    var_dump($res);

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 112
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    J'utilise !connection_aborted() pour savoir si le téléchargement est interrompu ou pas.

    Je ne peut pas récupérer le résultat des requêtes car le code fait partie de la page qui déclenche le téléchargement du fichier. Je ne vois pas comment récupérer ce résultat...

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    J'utilise !connection_aborted() pour savoir si le téléchargement est interrompu ou pas.
    Justement, j'aimerai beaucoup savoir comment ça fonctionne.

    Je ne peut pas récupérer le résultat des requêtes car le code fait partie de la page qui déclenche le téléchargement du fichier. Je ne vois pas comment récupérer ce résultat...
    Alors fais-le tracer sur un log. Et fais un tailf sur ton log lors du runtime

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/02/2010, 21h32
  2. [FPDF] Forcer le téléchargement et enregistrer une copie
    Par HwRZxLc4 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 16/12/2008, 12h59
  3. Réponses: 5
    Dernier message: 01/10/2007, 15h48
  4. Réponses: 3
    Dernier message: 16/05/2007, 09h19
  5. Réponses: 1
    Dernier message: 27/02/2007, 23h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo