@runprogr

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

По ссылке лежит огромный файл. Этот файл скачивается прямым ГЕТ запросом со стороннего сервиса и используется во внутренней логике проекта.
Необходимо всегда следить, чтобы ссылка на этот файл была в актуальном состоянии (не померла).
Интересует способ, как можно быстро кинуть запрос на url, получить в ответ статус (200 , если ссылка жива), и при этом НЕ скачивать сам файл. Потому что хочу добавить эту проверку в автоматические тесты, тесты будут запускаться постоянно и по понятным причинам даже лишние секунды, а уж тем более минуты, потраченные на скачку файла, мне тут не нужны
  • Вопрос задан
  • 75 просмотров
Решения вопроса 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с, дальше будет сбрасываться соединение.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы