@runprogr

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

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

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

Войти через центр авторизации
Похожие вопросы