Déconnexion lors des téléchargement

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Déconnexion lors des téléchargement

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

par squallblanc » 07 févr. 2018, 20:34

merci je vais regarder cela de plus prés :D

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

par @rthur » 06 févr. 2018, 21:05

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/

Déconnexion lors des téléchargement

par squallblanc » 05 févr. 2018, 17:34

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