OVH Cloud OVH Cloud

header telechargement interrrompu

7 réponses
Avatar
Damien
Mon probleme avec le code suivant est que le download s'interrompt avant
la fin (je récupère grosso modo comme 10Mo sur 60Mo).

Je du oublié du code pour dire à php d'attendre la fin du
téléchargement, mais lequel?

header('Content-type: application/zip');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-type: application/zip');
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$taille);
@readfile($fichier);

Merci de votre aide.

7 réponses

Avatar
Cedric Nilly
Damien wrote:
Mon probleme avec le code suivant est que le download s'interrompt avant
la fin (je récupère grosso modo comme 10Mo sur 60Mo).

Je du oublié du code pour dire à php d'attendre la fin du
téléchargement, mais lequel?


un problème de durée d execution peut-être ?
regarde du côté de http://fr.php.net/set-time-limit ...

Avatar
Luc
Mon probleme avec le code suivant est que le download s'interrompt avant
la fin (je récupère grosso modo comme 10Mo sur 60Mo).

Je du oublié du code pour dire à php d'attendre la fin du
téléchargement, mais lequel?

header('Content-type: application/zip');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-type: application/zip');
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$taille);
@readfile($fichier);

Merci de votre aide.



Bonjour,


En fait le souci ne vien pas de la, mais du temps d'exécution du script
sur le serveur, il faut augementer celui ci pour lui permettre de
télécharger l'ensemble de ton fichier :

set_time_limit(3000);

http://fr.php.net/set_time_limit

Mais ceci n'est pas possible sur tous les serveurs, il faut que cela
soit permis

En espérant avoir pus t'aider
Luc

Avatar
Sebastian 'CrashandDie' Lauwers
Damien wrote:

Bonjour,

Mon probleme avec le code suivant est que le download s'interrompt avant
la fin (je récupère grosso modo comme 10Mo sur 60Mo).

Je du oublié du code pour dire à php d'attendre la fin du
téléchargement, mais lequel?


sans doute que c'est la limite du temps d'exécution qui est trop petite...

essayez d'utiliser set_time_limit () avec une valeur suffisemment grande
pour permettre le fichier d'être téléchargé.

Anglais: http://fr.php.net/en/function.set-time-limit
Français: http://fr.php.net/fr/function.set-time-limit

[...]

Merci de votre aide.


HTH,

S.

Avatar
John GALLET
Bonsoir,

sans doute que c'est la limite du temps d'exécution qui est trop petite...


Si effectivement changer le time_limit résoud le problème, il va falloir
qu'on m'explique comment ou qu'on corrige la doc : les I/O sont censés ne
pas être comptabilisées dans ce temps.

a++
JG

Avatar
Missions courtes
"Damien" a écrit dans le message news:
41e41a80$0$29446$
Mon probleme avec le code suivant est que le download s'interrompt avant
la fin (je récupère grosso modo comme 10Mo sur 60Mo).



Bonjour,
Il est certain que tu passe en time out,
et que la quantité de fichier téléchargé va dépendre
de la vitesse de download de la connexion ADSL
de ton visiteur.

De nombreux hébergeurs ont invalidé la fonction :
set_time_limit ();

Je te suggère de découper ton fichier de 60 Mo
en petits fichiers de 5 à 6 Mo chacun.
Et de prévoir l'assemblage sur la micro du visiteur.

WINRAR fait très bien la compression et le découpage d'un fichier.

Cordialement.
Michel FOUILLADE
Site : Missions-courtes

Avatar
Vincent Lascaux
Si effectivement changer le time_limit résoud le problème, il va falloir
qu'on m'explique comment ou qu'on corrige la doc : les I/O sont censés ne
pas être comptabilisées dans ce temps.


Elles le sont sous windows il me semble

--
Vincent

Avatar
damien
Bonjour,
Il est certain que tu passe en time out, et que la quantité de fichier
téléchargé va dépendre de la vitesse de download de la connexion ADSL de ton

visiteur.

Je te suggère de découper ton fichier de 60 Mo en petits fichiers de 5 à 6
Mo chacun.

Et de prévoir l'assemblage sur la micro du visiteur.


On est hébergé chez online. Donc, pas possible d'appeler la fonction
set_time_limit.
D'autre part, j'ai effectivement récupéré 13Mo avec la free box en montant à
800Ko/s.
J'imagine que pour un modem lambda de base, il faudrait découper le fichier
par paquet de 1Mo pour avoir une chance de tout télécharger dans les temps
d'exécution du script.
Et je ne contrôle pas la vitesse de téléchargement.
En gros, c'est pas viable.

J'ai contourné le pb avec un lien classique sur le fichier, mais je suis pas
certain du coup qu'il ait été téléchargé (je sais uniquement que
l'utilisateur a visité la page où se trouve le lien, page d'ailleurs qu'il
n'accède qu'après avoir été identifié et retourné un formulaire).
Le seul hic c'est effectivement que je mets à jour la bd sans savoir si
l'utilisateur a bien téléchargé le fichier.

Merci de vos conseils.