ContentRangeServer\ContentRangeServer::serve PHP Method

serve() public method

public serve ( $path )
    public function serve($path)
    {
        $filesize = filesize($path);
        $fp = fopen($path, 'r');
        if (!isset($_SERVER['HTTP_RANGE'])) {
            header('HTTP/1.1 200 OK');
            header('Content-Length: ' . $filesize);
            header('Accept-Ranges: bytes');
            fpassthru($fp);
        } else {
            $range = new RangeHeader($_SERVER['HTTP_RANGE'], $path);
            if (!$range->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);
    }
ContentRangeServer