Descarga de archivos con PHP - ¡Solo descarga uno a la vez!
Pregunta
Tengo un archivo PHP que sirve un archivo, pero el problema es que no importa qué navegador se esté utilizando, si hace clic en 2 enlaces que van a 2 archivos separados, la segunda descarga no comienza hasta la primera. uno esta completo ¿Alguna idea?
Código de descarga
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);
Enlaces de ejemplo
- Enlace 1: download.php? downloadfile = 1
- Enlace 2: download.php? downloadfile = 2
Solución
Podría haber diferentes razones para esto.
-
Estás usando sesiones. Por lo tanto, solo un script a la vez puede modificar la sesión. Así que la descarga B solo puede comenzar después de que la descarga A haya terminado. ¿Probó dos descargas simultáneamente con la descarga A en el navegador A y la descarga B en el navegador B? Consulte la descripción para session_write_close
-
Algún otro problema de HTTP en el que su navegador no abrirá varias conexiones al servidor, sino que reutilizará una sola conexión y, por supuesto, tiene que esperar hasta que finalice la primera solicitud.
-
Algunas configuraciones de sistema operativo / servidor web que solo permiten un número muy limitado de conexiones simultáneas abiertas en total o por host