le he quitado lo del http_range y ahora los zips se bajan bien..
este es el codigo de ejemplo que he utilizado.
Código PHP:
<?php
function enviar_archivo($archivo, $speed)
{
// Recolectamos información sobre el archivo
$archivo_nombre = basename($archivo);
ob_end_clean();
// Empezamos con los headers
header("Cache-Control:");
header("Cache-Control: public");
header("Content-type: application/x-zip");
// Forzamos la descarga en lugar de la apertura
$tamano = filesize($archivo);
header("Content-Length: " . $tamano);
$header='Content-Disposition: attachment; filename='.$archivo_nombre;
header($header);
header("Accept-Ranges: bytes");
// Sólo queda abrir el archivo...
$puntero_al_fichero = fopen("$archivo","rb");
// localizar el inicio de la parte que queremos enviar...
fseek($puntero_al_fichero,0);
// y empezar a enviar.
set_time_limit(0);
while(!feof($puntero_al_fichero)) {
// Ponemos los datos en el buffer...
print(fread($puntero_al_fichero,1024*$speed));
// Y a dormir...
sleep(1);
}
// archivo descargado,
fclose($puntero_al_fichero);
exit;
}
enviar_archivo("zips/ejemplo.zip",50);
?>