Télécharger des fichiers avec PHP - Ne téléchargez qu'un fichier à la fois!
Question
J'ai un fichier PHP qui sert un fichier, mais le problème est que peu importe le navigateur utilisé, si vous cliquez sur 2 liens menant à 2 fichiers séparés, le deuxième téléchargement ne commence pas avant le premier. on est complet! Des idées?
Code de téléchargement
header('Content-Type: application/octet-stream');
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($fullpath));
readfile($fullpath);
Exemple de liens
- Lien 1: download.php? downloadfile = 1
- Lien 2: download.php? downloadfile = 2
La solution
Les raisons peuvent être différentes.
-
Vous utilisez des sessions. Par conséquent, un seul script à la fois est autorisé à modifier la session. Donc, le téléchargement B ne peut commencer que lorsque le téléchargement A est terminé. Avez-vous essayé deux téléchargements simultanément avec le téléchargement A dans le navigateur A et le téléchargement B dans le navigateur B? Vérifiez la description de session_write_close
-
Un autre problème HTTP dans lequel votre navigateur n'ouvre pas plusieurs connexions au serveur, mais réutilise une seule connexion et doit évidemment attendre la fin de la première requête.
-
Certains paramètres OS / Webserver n'autorisant qu'un nombre très limité de connexions simultanées ouvertes, au total ou par hôte