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

Langage PHP Discussion :

[FTP] Envois de fichiers trop encombrants


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut [FTP] Envois de fichiers trop encombrants
    Bonjour à tous,

    Lors de la création d'un script php forçant le téléchargement d'un fichier, je rencontre un problème empêchant le script de fonctionner...

    Je m'explique:
    nous disposons de 3 serveurs - 2 dédiés (xy et xz) hébergeant les fichiers et un mutualisé (ddl). Le script forçant le téléchargement se trouve sur ddl.

    La première partie se passe bien mais au cours du téléchargement un problème arrête le téléchargement...

    Les hypothèses avancées étant:
    1)timeout (temps d'exécution maximale du script sur ddl 18 secondes)
    2)taille mémoire excessive (la taille mémoire allouée par script est de 6 mo)

    Cependant aucune des 2 hypothèses n'est à mon avis réaliste car si l'on essaye de télécharger le fichier en limitant le débit à 1ko/s ou 10ko/s le temps de 18 secondes peut être amplement dépassé.

    voici le script
    <?php
    function url_exists($url)
    {
    $handle = @fopen($url, "r");
    if ($handle === false)
    return false;
    fclose($handle);
    return true;
    }
    $server="localhost";
    $user="user";
    $pass="pass";
    $base="base";

    $link=@mysql_connect($server,$user,$pass)
    or die("Connexion impossible".mysql_error ());
    @mysql_select_db($base)
    or die("impossible d'accéder à $base");
    $id=$_GET['did'];
    $sql= 'SELECT durl1,durl,dfilesize FROM `downloads` WHERE did="'.$id.'"';
    $req = mysql_query($sql)
    or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data = mysql_fetch_array($req);
    $fichier = $data['durl1'];
    $filename=$data['durl'];
    $len=$data['dfilesize'];
    mysql_free_result ($req);
    mysql_close ();
    if (url_exists($fichier)) {
    header("Content-disposition: attachment; filename=$filename");
    header('Content-Description: File Transfer');
    header('Content-Type: application/force-download');
    header("Content-Length: $len");
    readfile($fichier);
    }
    else {
    echo "Erreur 404";
    }
    ?>
    Petite précision
    1)les fichiers pèsent entre 160mo et 180mo
    2)il ne s'agit nullement de warez...(les fichiers sont libres)
    3)les fonctions permétants de restter le watchdog de php sont désactivées.
    4)aucune mention d'erreur n'est faite sur la sortie standard

    La question étant : y a il un moyen simple pour
    1)connaitre précisément le problème
    2)le résoudre

    Merci d'avance

    ++

    PS: j'espère ne pas avoir enfreint trop de règles lors de mon premier post

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    tu devrais utiliser les balises code (symbole #) pour ton message a la place des balises citations, c'est plus propre ;o)

    Il n'y a pas que le temps d'execution du script, il y a aussi le temps max d'execution apache par exemple qui est a 300 secondes par defaut je crois. Tu devrais chronometrer le timeout et changer le débit pour savoir si c'est une limitation de timeout ou de taille mémoire (si timeout en meme temps alors que débit différent : probleme timeout, sinon probleme taille mémoire)

  3. #3
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Vous avez jeter un oiel aux logs d'apache et de php ? Il doit y avoir quelque chose à l'intérieur si le problème provient de l'un d'eux.

    Sinon tu peux ajouter

    error_reporting(E_ALL);
    En début de script pour être certain qu'aucune erreur n'est générée.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Un grand merci pour les précieuses informations;-)

    il s'agit d'un problème de mémoire...

    Est ce qu'il y a un moyen de passer outre? de limiter la mémoire pour l'inscruction readfile?

    @+

  5. #5
    Membre éclairé
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Par défaut
    Si readfile est trop gourmand en mémoire, tu peux peut-être essayer de lire ton fichier par petit bout avec fread (j'ai pas testé) ? Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $file = fopen('...', 'rb');
    while (!feof($file)) {
     $buf = fread($file, $buf_length); // $buf_length en octect
     echo $buf;
    }
    fclose($file);

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 4
    Par défaut
    Merci pour l'astuce mais sa fonctionne pas... là c'est php qui me jette en me disant que le temps est dépasé
    (j'ai dû ouvrir le fichier avec notepad++ pour le voir....)

    @+
    bonne soirée

Discussions similaires

  1. [FTP] Envoi de fichier ZIP
    Par Arbisis dans le forum Langage
    Réponses: 2
    Dernier message: 03/04/2008, 23h46
  2. [FTP] Envoi de fichiers
    Par gasper06 dans le forum Langage
    Réponses: 4
    Dernier message: 27/01/2008, 22h07
  3. [FTP] Envois de fichiers trop encombrants
    Par baby-tux dans le forum Langage
    Réponses: 12
    Dernier message: 08/09/2006, 14h07
  4. Envoi de fichier sur un serveur FTP
    Par pepe2006 dans le forum Access
    Réponses: 6
    Dernier message: 02/12/2005, 10h19
  5. [C#] [FTP] Envoi et suppression fichier sur ftp NON ANONYME!
    Par djsbens dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/03/2005, 10h20

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