Hız limiti ile dosya indirmek

Dosya indirdiğimiz çoğu dosya paylaşım sitesinde bu hız limiti durumlarına rastlamışsınızdır. “bize üye olun ve dosyayı daha hızlı indirin” gibisinden bir uyarı da vardır. Biz de sunucumuzdan dosya çekecek olan müşteri, arkadaş ya da benzeri kişilere bu hız limitini ayarlayabiliriz. Onların dosyayı yavaş indirmesini sağlayabiliriz. Php ile yazılmış bir kod bu ayarı yapmamızı sağlayacaktır.

Hız Limiti Ayarını Yapmak

Ayrıca bu tarz bir limitleme koymak Bandwith (bant genişliği) harcamamıza da etkisi olacaktır (iyi anlamda).

Kod;

// İndirilecek lokal dosya
$local_file = 'test-file.zip';
 
// dosyanın kaydedilecek adı
$download_file = 'your-download-name.zip';
 
// Dosya indirme hızı ayarı (=> 20,5 kb/s)
$download_rate = 20.5;
 
if(file_exists($local_file) && is_file($local_file)) {
 
    // headerleri ayarla
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($local_file));
    header('Content-Disposition: filename='.$download_file);
 
    // içeriği temizle
    flush();
 
    // dosyayı aç
    $file = fopen($local_file, "r");
 
    while (!feof($file)) {
 
        // taryıcıya dosyayı gönder
        print fread($file, round($download_rate * 1024));
 
        // tarayıcıdaki içeriği temizle
        flush();
 
        // bir saniyelik uyku
        sleep(1);
    }
 
    // dosya istemini kapat
    fclose($file);
 
}
else {
    die('Hata: '.$local_file.' dosyası bulunamadı!');
}

Selametle