Streaming (?) pliku - pobieranie przez pośrednika

0

Witam,
mam na chwilę obecną 15 plików (rar) z danymi, które są udostępniane użytkownikom, po spełnieniu określonych warunków. Na chwilę obecną, user może zalogować się do panelu, wybrać odpowiedni plik i rozpocząć pobieranie. Jest ono realizowane przez skrypt i nagłówki, skrypt typu download.php?id=numer_pliku. Dzięki temu otrzymuję info ile razy został pobrany plik, oraz przez kogo.

Miejsca na serwerze nie mam za wiele, za to transferu pod dostatkiem. Jako, że pliczki są sporawych rozmiarów (+/- 350MB), chciałbym je przerzucić na inny serwer, żeby sobie leżały, i puszczać cały transfer przez dotychczasowy serwer.

Dlaczego nie przeniosę się całkowicie na drugi serwer ? Otóż są na nim pewne ograniczenia, które powodują, że staje się on idealny dla hostowania pliczków (dość duża pojemność, transfer jak dla moich potrzeb ok, i za darmo - jak dla mnie).

Poczytałem trochę szczątkowych informacji nt. wprowadzenia pośrednika, między użytkownika a serwer z plikami. Nie mniej jednak nie wiem jak się do tego zabrać.

Domyślam się, że należy postąpić mniej więcej następująco :
a) user klika link
b) POST'em do serwera A -> ten z kolei łączy się z serwerem B i rozpoczyna pobieranie pliku cząstkami
c) każda odebrana cząstka jest natychmiastowo wysyłana do przeglądarki użytkownika, jednocześnie jest kasowana z pamięci serwera A

Ktoś mógłby pomóc ? Dać jakiś link ? Kod ? Cokolwiek ?

0

no niestety nie da rady coś takiego, stąd też potrzebuję streamingu pliku :/ Ma ktoś jakieś info ?

//
wymodziłem coś takiego :

function download($link)
{
	$curl = curl_init();
	$bytes = rozmiar($link);
	curl_setopt($curl, CURLOPT_URL, $link);
	curl_setopt($curl, CURLOPT_NOBODY, false);
	curl_setopt($curl, CURLOPT_HEADER, false);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);

		header('HTTP/1.1 206 Partial Content');
		header('Content-type: application/x-rar');
		header("Content-Type: application/octet-stream");
		header('Content-Disposition: attachment; filename="' . basename($link) . '"'); 
		header("Content-Length: ".$bytes.";\n");
		header('Accept-Ranges: bytes');
	$req = curl_exec($curl);
	curl_close($curl);
	exit();
}

Niestety, przy próbie pobrania pliku pobiera tylko 20B :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1