Как загрузить URL и вернуть только последние 20 КБ - PullRequest
4 голосов
/ 23 февраля 2011

Мне сообщили о заголовке Accept-Range.

У меня есть URL, который я звоню, который всегда возвращает файл 2 МБ. Мне не нужно так много, а нужен только последний раздел 20-50k.

Я не уверен, как его использовать? Нужно ли мне использовать cURL? Я сейчас использую file_get_contents().

Может ли кто-нибудь предоставить мне пример / учебник?

Спасибо.

РЕДАКТИРОВАТЬ: Если это невозможно, то о чем пост? Здесь ... РЕДАКТИРОВАТЬ: Ульрика! Я не сумасшедший.

Ответы [ 4 ]

3 голосов
/ 23 февраля 2011

Это возможно с помощью заголовка Range, если сервер поддерживает его.См. HTTP 1.1 spec .Вы хотели бы отправить заголовок в следующем формате в вашем запросе:

Range: bytes=-50000

Это даст вам последние 50 000 байтов.Отрегулируйте все, что вам нужно.

Вы можете указать этот заголовок в file_get_contents, используя контекст.Например:

// Create a stream
$opts = array(
  'http'=>array(
    'method' => "GET",
    'header' => "Range: bytes=-50000\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
0 голосов
/ 23 февраля 2011

Если бы вам нужно было file_get_contents() и сбросить его в сквозной файл 'cache' на диске, то вы могли бы использовать unix / linux tail -c, чтобы получить только последние 20 КБ или около того.Это не уменьшает фактическую передачу, но добавляет эти 20 КБ в приложение.

0 голосов
/ 23 февраля 2011

Это действительно возможно - см. этот вопрос для примера отправленных и полученных заголовков HTTP

0 голосов
/ 23 февраля 2011

ты не можешь этого сделать.Вам нужно будет загрузить весь файл (который целиком и последовательно отправляется исходным сервером) и просто отбросить большую его часть.

То, что вы спрашиваете, похоже на «I»Я настраиваюсь на эту радиостанцию ​​на моей автомобильной стереосистеме, и я хочу слышать только последние 5 минут шоу, не дожидаясь, пока остальные завершат или переключат каналы ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...