Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2010, 19h52   #1
Invité de passage
 
Homme
Inscription : juillet 2009
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juillet 2009
Messages : 31
Points : 2
Points : 2
Par défaut Téléchargement de fichier

Bonjour,

en ce moment je développe un module de téléchargement de fichiers via un script PHP; evidemment rien ne marche, ou presque ! J'espère que vous saurez trouver une réponse à tout cela...

En gros j'ai un script file.php qui incorpore une variable $path (le chemin donc) et $name (le fichier), s'ensuit un code tel que celui-ci...

Code :
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
$local_file ='serv/files/'.$path.'/'.$name;
 
// Le fichier que vera l'user
$download_file = 'serv/files_temp/[MonSite] '.$name;
 
// le download limit (en Kbits)
$download_rate = 1500;
 
if(file_exists($local_file) && is_file($local_file)) {
 
    // send headers
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($local_file));
    header('Content-Disposition: filename='.$download_file);
    flush();
 
 
    $file = fopen($download_file, "r");
    while(!feof($file)) {
 
        print fread($file, round($download_rate * 1024));
        flush();
        sleep(1);
 
    }
 
    fclose($file);
 
} else {
    die('Error: The file '.$local_file.' does not exist!');
}
Vous l'aurez deviné, je cherche à déplacer les fichiers de /files/ (d'ailleurs protégé par un .htaccess "deny from all" pour éviter tout pompage de fichiers) vers /files_temp/ d'où il est téléchargé; de ce côté là j'ai l'impression que ça fait même pas ça, j'ai regardé la fonction copy() pour que ça le gère, mais peu importe ce n'est pas le vrai problème ici.

Ensuite, le téléchargement a une limite de vitesse (1.5Mb ici), et dans l'idéal je voulais limiter le téléchargement à un à la fois (mais je l'ai pas encore inclus). Bref !

Le problème est que ça fait un peu n'importe quoi et je ne sais pas trop pourquoi.

En gros on clique, la page charge, charge (et en fait ça télécharge mais le navigateur s'en rend pas compte, premier gros problème ! Si un fichier fait 500MB et que l'user a une petite connexion il va croire que le script plante carrément, sans "suivi" des données téléchargées, je vois pas du tout comment régler ça déjà).

Ensuite, et de manière tout à fait arbitraire, le téléchargement ce coupe d'un coup, qu'il soit à 5Mo ou 60Mo, ça change tout le temps. 2eme gros problème donc puisque c'est pas possible de créer un service de téléchargement dans ces conditions ! Ma théorie: je met ça sur le dos d'un timeout du serveur Apache, car rappelez-vous c'est un chargement de page et pas un téléchargement concret qui est constaté, à part à la fin.

Evidemment j'ai fait des milliers de tests, j'ai enlevé le download rate, j'ai simplifié les header() au maximum, ou j'ai complexifié, j'ai même enlevé les .htaccess pour voir si ça venait de là, j'ai donc testé un peu tout: le résultat est à peu de chose prés le même. Tout téléchargement via script a le même résultat chez moi.

Je précise que je suis pour l'instant en local sur Wampserver (qui a une facheuse tendance à mal gérer les header() de mon expérience), et j'espère qu'il y a une solution à tout ça... Je suis un peu désespéré, ça fait plusieurs heures que je me penche sur ce seul problème.

Listing des problèmes:
1) Téléchargement qui a l'air d'un chargement de page, aucun suivi de la progression
2) Fichiers erronés, taille qui change tout le temps et qui n'est pas celle du vrai fichier

Je me tourne donc vers vous, en espérant que quelqu'un ai une idée, m'explique que j'ai (espérons le) mal écrit quelque chose, et que ce n'est pas un problème insoluble

Merci beaucoup à vous de m'avoir lu et de m'apporter votre aide
MaXOhBalle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 20h17   #2
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
Indices :

- Output buffering activité par default dans la conf de PHP ?
- set_time_limit(0)
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 22h36   #3
Invité de passage
 
Homme
Inscription : juillet 2009
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juillet 2009
Messages : 31
Points : 2
Points : 2
Citation:
Envoyé par |PaRa-BoL Voir le message
Indices :

- Output buffering activité par default dans la conf de PHP ?
- set_time_limit(0)
output_buffering = On

maintenant ça charge sans s'arrêter, je test avec un gros fichier depuis tout à l'heure et j'attend ^^

http://hpics.li/558edaf pour voir à quoi ça ressemble sur mon ordi

Dernier problème, on voit absolument pas la progression, si j'arrive à regler ça, le principal sera réglé !

Edit: output_buffering = off et je vois enfin la progression, j'avais pas eu idée de modifier alors que tu me l'avais dit ! Dernier point, y a-t-il un moyen pour mettre le output_buffering sur off juste pour cette page ? Histoire de ne pas généraliser au site, merci
MaXOhBalle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 04h38   #4
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
devrait suffire.
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 05h14   #5
Invité de passage
 
Homme
Inscription : juillet 2009
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juillet 2009
Messages : 31
Points : 2
Points : 2
Merci beaucoup en retard
MaXOhBalle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h10.


 
 
 
 
Partenaires

Hébergement Web