@runprogr

Как получить статус запроса без скачивания контента?

По ссылке лежит огромный файл. Этот файл скачивается прямым ГЕТ запросом со стороннего сервиса и используется во внутренней логике проекта.
Необходимо всегда следить, чтобы ссылка на этот файл была в актуальном состоянии (не померла).
Интересует способ, как можно быстро кинуть запрос на url, получить в ответ статус (200 , если ссылка жива), и при этом НЕ скачивать сам файл. Потому что хочу добавить эту проверку в автоматические тесты, тесты будут запускаться постоянно и по понятным причинам даже лишние секунды, а уж тем более минуты, потраченные на скачку файла, мне тут не нужны
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
@runprogr Автор вопроса
Видимо в некоторых случаях сервер может отдавать вместе с HEAD еще и BODY.
Либо же это именно проблема guzzle.
Но в моему случае при запросе HEAD идет скачка всего файла целиком

Есть костыль как это победить, если у кого будет такая же ситуация
$client = new \GuzzleHttp\Client();
$response = $client->head($url, [
            'stream' => true,
            'read_timeout' => 1,
]);
$this->assertEquals(200, $response->getStatusCode());

Таким образом будет ограничение по времени на скачку не более 1с, дальше будет сбрасываться соединение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
LAPTOP.RU Москва
от 130 000 до 170 000 ₽
LAPTOP.RU Кострома
от 25 000 до 65 000 ₽
от 140 000 до 180 000 ₽
01 мар. 2021, в 00:47
300000 руб./за проект
01 мар. 2021, в 00:29
5555 руб./за проект