Zend_Http_Client: Как "не загружать большие файлы"

У меня есть PHP-скрипт с использованием Zend_Http_Client.

Скрипт делает 2 вещи:

  • "Развернуть" сокращенные URL + получить MIME-тип URL
  • Получить HTML-содержание текстовых / HTML-URL

Я использую этот простой код:

$client = new Zend_Http_Client($url);
$response = $client->request('GET');
$headers = $response->getHeaders();
$body = $response->getBody();

Все ОК, за исключением ситуации, когда URL содержит, например, MP3-файл размером 100 Мб. Мне нужен только HTML-контент, а не MP3. Поэтому я хочу настроить Zend_Http_Client так, чтобы "не загружать файлы более 2 МБ". Является ли это возможным?

Да, я могу сделать 2 запроса - сначала для получения MIME URL, а затем для получения HTML, если MIME=text/html, но делать 2 разных запроса слишком дорого.

Итак, вопрос: как проверить размер загружаемого контента и без ошибок остановить загрузку, когда вес уже загруженного контента превысил 2 Мб?

1 ответ

Если вы будете следовать протоколу, лучше всего сначала отправить запрос HEAD, проверить ожидаемый тип и размер контента, а затем отправить запрос GET. Однако этого может быть недостаточно для вас и может поддерживаться не всеми серверами.

Кроме того, вы можете использовать поддержку потокового ответа, чтобы прервать загрузку до того, как тело будет загружено. См. Пример № 11 по адресу http://framework.zend.com/manual/1.12/en/zend.http.client.advanced.html.

Другие вопросы по тегам