readfile sur https avec un gros fichier

readfile sur https avec un gros fichier - PHP - Programmation

Marsh Posté le 10-12-2007 à 18:43:48    

Bonjour à tous,
alors voilà je me trouve face à un bug récalcitran sur un de mes scripts php. Ce script a pour objectif de lancer le téléchargement d'un fichier généré à la volée à partir d'un fichier existant appellé par la fonction readfile(). Voici le script:
 

Code :
  1. <?
  2. $file=$_GET['file'];
  3. //telechargement
  4. $taille=filesize($file);
  5. header("Content-Type: application/force-download; name=\"$file\"" );
  6. header("Content-Transfer-Encoding: binary" );
  7. header("Content-Length: $taille" );
  8. header("Content-Disposition: attachment; filename=\"$file\"" );
  9. header("Expires: 0" );
  10. header("Cache-Control: no-cache, must-revalidate" );
  11. header("Pragma: no-cache" );
  12. readfile($file);
  13. exit();
  14. ?>


 
J'utilise ce script sur une connection sécurisée https et le fichier que je génère pèse environ 800Mo et c'est là que se pose le problème car lorsque que j'ouvre la page dans mon navigateur le téléchargement se lance et s'effectue jusqu'aux environs de 500Mo et là mon navigateur me renvoi l'erreur suivante : "code d'authentification de message incorrect".
 
Le script ne pose pas de problème sur une connection http ou avec des fichiers inferieur à 500Mo.
 
Quelqu'un aurait-il une idée de l'origine du problème?
 
Cordialement
Pablo

Reply

Marsh Posté le 10-12-2007 à 18:43:48   

Reply

Marsh Posté le 11-12-2007 à 09:57:05    

ne pourrait tu pas utiliser la fonction curl ? pour télécharger un gros fichier je pense que c'est plus adapté.


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 11-12-2007 à 11:27:20    

Merci PierreC de ta réponse, je l'ai mise en place mais le problème persiste: aux alentours de 500Mo le téléchargement s'arrête.
 
Voici le code que j'ai utilisé :
 

Code :
  1. <?
  2. header("Content-Type: application/force-download; name=\"$file\"" );
  3. header("Content-Disposition: attachment; filename=essai.avi" );
  4. $ch = curl_init("mon_url" );
  5. curl_exec($ch);
  6. curl_close($ch);
  7. ?>


 
Merci

Reply

Marsh Posté le 11-12-2007 à 23:20:24    

ça me parait aussi étrange, qu'il doit y avoir une solution simple...

 

vérifie d'abord la limite de temps autorisé pour les scripts PHP (ça se règle dans le php.ini ou php.conf pour la conf globale, ou avec la fonction set_time_limit() pour une conf par fichier PHP).


Message édité par nargy le 11-12-2007 à 23:22:05
Reply

Marsh Posté le 12-12-2007 à 10:48:14    

Merci mille fois de votre aide. Nargy le problème était bien là ^^. Une commande devait être executé une fois l'ensemble du fichier mise en cache soit quelque centaine de Mo dans mon cas avant la fin du téléchargement et donc cette commande était hors du délai du set_time_limit() et provoquait donc une erreur qui mettai fin au téléchargement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed