Как повесить timeout на скачивание файла по url?

Делаю запрос на получение изображения из другого сервиса на PHP. Иногда выпадает 502 ошибка, занимает больше 5 секунд запрос такой. Нужно ограничить время запроса. Как это сделать? Пробовал:

  1. через file_get_contents

    $url = "http://....";

    $res = file_get_contents($url, 0, stream_context_create(["http"=>["timeout"=>2]]));

  2. через curl:

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);

    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1500);

    $result = curl_exec($ch);

    curl_close($ch);

Но периодически запросы выполняются 5 - 10 сек.


Ответы (0 шт):