• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سوال درمورد محدود سازی و قابلیت ادامه دانلود
#1
سلام اساتید گرام !
یک سوال داشتم که چطور سرعت دانلود رو محدود کنم و قابلیت ادامه دانلود رو اضافه کنم .
من توی اینترنت گشتم و مطالبی این رابطه بود ولی بدرد من نمیخورد چون دانلود رو با ماژول xsendfile انجام میدم .
خواهشن کمک کنید و اگر میشه یک نمونه کد هم قرار بدید . ممنون
  پاسخ
تشکر شده توسط :
#2
بهتره این کارو با وب سرور انجام بدی
پی اچ پی یه کم لولش بالاست برای این کارا
ولی با این حالا یه راه هایی هست:
https://www.google.com/search?q=how+to+s...channel=sb
همه جوره اش رو داریم ظاهرن
  پاسخ
تشکر شده توسط :
#3
سلام ببخشید من با محدود سازی فعلا کار ندارم ولی ادامه دانلود رو نمیتونم درست کنم از کد زیر هم استفاده کردم ولی بعد از توقف دانلود و کلیک روی ادامه دانلود ، سرعت دانلود 0kb/s میشود و دیگه ادامه پیدا نمیکنه !
کد من :
کد:
<?php

$filepath = dirname(__FILE__)."/download.mp4";
$filename =  "dl.mp4";
$size = filesize($filepath);

if (isset($_SERVER['HTTP_RANGE'])) {
    //
    // Resume download or multiple threads
    //
    list($size_unit, $range_orig) = explode('=', $_SERVER['HTTP_RANGE'], 2);
    if ($size_unit === 'bytes') {
        if (strpos($range_orig, ',') !== false) {
            list($range, $extra_ranges) = explode(',', $range_orig, 2);
        } else $range = $range_orig;
    } else {
        header('HTTP/1.1 416 Requested Range Not Satisfiable');
        exit;
    }

    list($start, $end) = explode('-', $range, 2);
}
// set start and end based on range (if set), else set defaults
// also check for invalid ranges.
$end   = (empty($end)) ? ($size - 1) : min(abs(intval($end)), ($size - 1));
$start = (empty($start) || $end < abs(intval($start))) ? 0 : max(abs(intval($start)), 0);

header("X-Sendfile: $filepath");
header("Content-Type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Accept-Ranges: bytes');
//header('Content-Transfer-Encoding: binary');
header('Cache-control: private');
header('Pragma: private');

// Only send partial content header if downloading a piece of the file
if ($start > 0 || $end < ($size - 1)) {
    header('HTTP/1.1 206 Partial Content');
    header('Content-Range: bytes '. $start .'-'. $end .'/'. $size);
    header('Content-Length: '.($end - $start + 1));
} else {
    header("Content-Length: $size");
}
exit;
  پاسخ
تشکر شده توسط :
#4
https://www.google.com/search?client=fir...jXU8JBwa6M
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان