- Автор темы
 - #1
 
Есть простой скрипт благодаря которому можно отдавать файлы(не паля прямые линки на файлы) и осуществлять докачку файла(в случае дисконекта, например
	
	
	
		
Будет ли нормально работать такой метод для файлов размером по 1-2 гигибайта
	
		
			
		
		
	
				
			
		PHP:
	
	$fname=$_GET['fname']; // имя файла
$fsize = filesize('secret_data/'.$fname); // secret_data папка в которой лежат файлы
$fdown = 'secret_data/'.$fname;
// Установлена или нет переменная HTTP_RANGE
if (getenv('HTTP_RANGE') == "") {
  // Читать и отдавать файл от самого начала
  $f = fopen($fdown, 'r');
  header("HTTP/1.1 200 OK");
  header("Connection: close");
  header("Content-Type: application/octet-stream");
  header("Accept-Ranges: bytes");
  header("Content-Disposition: Attachment; filename=".$fname);
  header("Content-Length: ".$fsize); 
  echo fread($f, $fsize);
  }
  fclose($f);
}
else {
  // Получить значение переменной HTTP_RANGE
  preg_match ("/bytes=(\d+)-/", getenv('HTTP_RANGE'), $m);
  $csize = $fsize - $m[1];  // Размер фрагмента
  $p1 = $fsize - $csize;    // Позиция, с которой начинать чтение файла
  $p2 = $fsize - 1;         // Конец фрагмента
  $f = fopen($fdown, 'r');
  header("HTTP/1.1 206 Partial Content");
  header("Connection: close");
  header("Content-Type: application/octet-stream");
  header("Accept-Ranges: bytes");
  header("Content-Disposition: Attachment; filename=".$fname);
  header("Content-Range: bytes ".$p1."-".$p2."/".$fsize);
  header("Content-Length: ".$csize);
  fseek ($f, $p1);
  echo fread($f, $csize);
  fclose($f);
	Будет ли нормально работать такой метод для файлов размером по 1-2 гигибайта
				