Page 1 sur 1

Déconnexion lors des téléchargement

Posté : 05 févr. 2018, 17:34
par squallblanc
Bonjour,
je rencontre actuellement un problème avec le téléchargement de gros fichiers chez 1and1 en mutualisé.

J'utilise le script ci-dessous pour lancer le téléchargement de mon fichier qui fait 1,44Go.
Lorsque l'on télécharge le fichier avec une connexion de faible débit le dl coupe.

Je souhaiterais savoir s'il existe une solution pour éviter que cela coupe?
voici mon script:
set_time_limit(0);
include('config.php');

$name = $_GET['download_file'];
$dossier = "../uploads/beta/";

if (empty($_GET["download_file"])) {
    header("HTTP/1.1 404 Not Found");
    exit;
}
 
if(basename($_GET["download_file"]) != $_GET["download_file"]) {
    header("HTTP/1.1 400 Bad Request");
    exit;
}
 
$filename = $dossier."/".$name;
if (!is_file($filename) || !is_readable($filename)) {
    header("Location: https://easy-mining-os.com/404");
    exit;
}
$size = filesize($filename);
 
if (ini_get("zlib.output_compression")) {
    ini_set("zlib.output_compression", "Off");
}
	
session_write_close();

header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0");
header("Cache-Control: max-age=0");
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Type: application/force-download");
header('Content-Disposition: attachment; filename="'.$name.'"');
header("Accept-Ranges: bytes");
 
$start = 0;
 
$end = $size - 1;
if (isset($_SERVER["HTTP_RANGE"])) {
    if (!preg_match("#bytes=([0-9]+)?-([0-9]+)?(/[0-9]+)?#i", $_SERVER['HTTP_RANGE'], $m)) {
        header("HTTP/1.1 416 Requested Range Not Satisfiable");
        exit;
    }

    $start = !empty($m[1])?(int)$m[1]:null;
    $end = !empty($m[2])?(int)$m[2]:$end;
    if (!$start && !$end || $end !== null && $end >= $size
        || $end && $start && $end < $start) {
        header("HTTP/1.1 416 Requested Range Not Satisfiable");
        exit;
    }
    if ($start === null) {
        $start = $size - $end;
        $end -= 1;
    }
    header("HTTP/1.1 206 Partial Content");
    header("Content-Range: ".$start."-".$end."/".$size);
}
header("Content-Length: ".($end-$start+1));
$f = fopen($filename, "rb");
fseek($f, $start);

$remainingSize = $end-$start+1;
 
$length = $remainingSize < 8192?$remainingSize:8192;
 
while (false !== $datas = fread($f, $length)) {
    echo $datas;
 
    $remainingSize -= $length;
 
    if ($remainingSize <= 0) {
        break;
    }

    if ($remainingSize < $length) {
        $length = $remainingSize;
    }
}
fclose($f);
Merci pour votre aide

Re: Déconnexion lors des téléchargement

Posté : 06 févr. 2018, 21:05
par @rthur
Alors pour éviter que ça coupe, il n'y a qu'une seule solution c'est d'avoir une bonne connexion :-D

Pour palier à ton problème, une solution serait que tu puisse reprendre le téléchargement là où il s'est arrêté jusqu'à ce que le fichier soit complet.
Voici quelques pistes pour le faire pour des téléchargement FTP :
https://gist.github.com/cballou/3781156
http://blackbe.lt/ftp-file-downloads-wi ... me-in-php/

Re: Déconnexion lors des téléchargement

Posté : 07 févr. 2018, 20:34
par squallblanc
merci je vais regarder cela de plus prés :D