isValid()) { header('HTTP/1.1 416 Requested Range Not Satisfiable'); header('Content-Range: ' . $range->getContentRangeHeader()); exit; } $length = $range->getLength(); header('HTTP/1.1 206 Partial Content'); header('Content-Length: ' . $length); header('Content-Range: ' . $range->getContentRangeHeader()); $start = $range->getFirstBytePosition(); if ($start > 0) { fseek($fp, $start, SEEK_SET); } $chunk_size = 4096; while ($length) { $read = $length > $chunk_size ? $chunk_size : $length; $length -= $read; echo fread($fp, $read); } } fclose($fp); } }