Limitare viteza de descarcare cu PHP

La un moment dat ma batea gandul sa las vizitatorii sa descarce trailere la filmele pe care le postez. M-am gandit ca daca se vor aduna multi care vor descarca aceste fisiere voi avea plangeri de la hosting. Solutia ar fi limitarea vitezei cu PHP. Scriptul merge folosit si la fisiere mult mai mari, de exemplu imagini de CD-uri (kit instalare Ubuntu).

<?php
$local_file = 'defiance-2011-trailer.avi';
$download_file = 'trailer-defiance-2008-www.ddumi.ro.avi';
$download_rate = 20.5;
if (file_exists($local_file) && is_file($local_file))
{
	header('Cache-control: private');
	header('Content-Type: application/octet-stream');
	header('Content-Length: ' . filesize($local_file));
	header("Content-Disposition: filename=$local_file" . "%20");
	flush();
	$file = fopen($local_file, 'r');
	while(!feof($file)) 
	{
		echo fread($file, round($download_rate * 1024));
		flush();
		sleep(1);
	}
	fclose($file);
}
else
{
	die('Eroare: fisierul ' . $local_file . ' nu exista!');
}

$local_file fisierul de pe server ce urmeaza a fi descarcat, $download_file este numele fisierului ce urmeaza a fi descarcat si salvat la utilizator in calculator si $download_rate care este limita de viteza la descarcare, (preferabil peste 20,5 kb/s).

Viteza se seteaza in functie de marimea fisierului, decat sa se chinuie 10 persoane cu 50 Kbps pentru un trailer de 7 mega mai bine ii lasi sa descarce cu 500 Kbps si in cateva secunde au terminat.

Intrebari, sugestii? 🙂

One thought on “Limitare viteza de descarcare cu PHP”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.