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.