download multiple

Mammouth du PHP | 737 Messages

26 mai 2009, 10:15

Bonjour,

J'ai un p'tit souci qui tient plus du détail qu'autre chose mais que je voudrais quand même réussir à comprendre et corriger si possible.

J'ai eu besoin de mettre en place une appli web pour télécharger de très gros fichiers. Ayant stocké tous mes liens en base et mes fichiers archives zip dans un dossier dédié j'ai forcé le téléchargement, mais si je clique sur un lien puis un autre pour lancer 2 téléchargements simultanément mon navigateur attend que le premier zip soit complètement téléchargé pour ouvrir la 2ème fenêtre "ouvrir, enregistrer, annuler" et ainsi lancer le 2ème téléchargement. C'est pénible quand on veut lancer le téléchargement de tous les fichiers sur une bécane...Ca oblige à rester devant son poste :roll:

Vous voyez le problème ? D'où ça peut venir ? Apache ? Php ? Mysql ? Mon script ?

Merci à vous.

Mega
;)

ViPHP
ViPHP | 5924 Messages

26 mai 2009, 15:12

Tu as un lien à nous proposer ?

Eléphant du PHP | 245 Messages

26 mai 2009, 15:25

je me demande, si ça ne vient pas plutot du navigateur?

ViPHP
ViPHP | 2287 Messages

26 mai 2009, 16:00

je me demande, si ça ne vient pas plutot du navigateur?
Très probable en effet. Quel navigateur utilises-tu ?

Il faut savoir que c'est le protocole HTTP 1.1 (RFC2616) qui limite à 2 connexions ouvertes entre le client et le serveur.

Internet Explorer 7 (et les versions antérieures) respecte strictement cette limite : http://msdn.microsoft.com/en-us/library ... S.85).aspx
In Internet Explorer 7 and earlier, the maximum number of concurrent connections per host process to a single server via HTTP 1.1 is 2.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 737 Messages

26 mai 2009, 16:00

Tu as un lien à nous proposer ?
Non désolé c'est une appli web interne avec de très gros fichiers zip !

Je peux toujours vous fournir mon code si vous voyez un truc à corriger, optimiser...
<? session_start();
if (!isset($_SESSION["login"])) {   
  header("location:index.php");  
  exit(); 
}

//param de connexion
// --- GO ! --- 

$q = "SELECT * FROM items WHERE id = ".$_GET["id"];
$r = mysql_query($q);  

if ($rows=mysql_fetch_array($r)){
  $filename = $rows["chemin"];  

  if(is_file($filename)) {
	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: private", false);
        header("Content-Type: application/octet-stream");
        header("Content-Disposition: attachment; filename=".basename($filename));
	header("Content-Transfer-Encoding: binary");
        header("Accept-Ranges: bytes");   
        header("Content-Length: ".filesize($filename));   
     readfile($filename);   
  } else {
    echo 'Fichier non trouvé';
}
} else {
  echo 'pas en base';
}
?>
Navigateurs : FF3.0 et IE7.0

Je vois pas...Est-ce que ca peut venir du <? ? Mettre <?php ? En tout cas merci de vous soucier de mon problème.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 mai 2009, 17:04

IE jusqu'à sa version 7 n'autorise effectivement que deux téléchargements simultanés depuis un serveur (la version 8 en autorise 6 il me semble... à confirmer).

Ce paramétrage peut toutefois être modifié dans la base de registre de windows en ajoutant deux clés de type DWORD (ConnectionsPer1_0Server
et MaxConnectionsPerServer) dans

Code : Tout sélectionner

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
, et en spécifiant le nombre max souhaité (par exemple 10).

J'imagine que cela affecte FF également... :)

Après, faut savoir que fonction des connexions serveur et utilisateur, lancer 15 gros téléchargements simultanés peut s'avérer plus lent que de lancer les 15 à la suite... donc c'est interessant pour récupérer plusieurs petits fichiers, mais au delà....
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 737 Messages

26 mai 2009, 17:50

Re,

Je me coucherai plus savant ce soir ^^.

Pour en revenir au truc, c'est que même 2 dans mon cas ca ne fonctionne pas vraiment.
Je clique sur le premier lien, le téléchargement commence puis clique sur un deuxième lien, la fenêtre de téléchargement s'ouvre, je clique sur enregistrer mais rien ne se passe. Tant que le premier n'est pas arrivé à son terme, nada, par contre il garde en mémoire le fait que j'ai accepté et lance le download dès que le premier zip est arrivé à son terme.

C'est bizarre, de chez moi, j'ai l'impression que je peux lancer x téléchargements et tout roule. Plusieurs fichiers en même temps, un executable, des images, de la zik, une vidéo...
Ex : un mail avec pleins de petites vidéos, je peux lancer tous les downloads à la fois de mémoire...


Mega
;)

Mammouth du PHP | 737 Messages

28 mai 2009, 16:09

C'est bizarre, de chez moi, j'ai l'impression que je peux lancer x téléchargements et tout roule. Plusieurs fichiers en même temps, un executable, des images, de la zik, une vidéo...
Ex : un mail avec pleins de petites vidéos, je peux lancer tous les downloads à la fois de mémoire...
Je confirme. Bizarre :?

Faut ouvrir une page en blank pour chaque enregistrement ?

Mega
;)