https://github.com/KhristenkoYura/mcurl - примеры использования библиотеки
https://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html - допустимое время для получения запроса в секундах
Данной библиотекой не пользовался, но алгоритм такой: устанавливаете опции клиенту, делаете запрос и возвращается объект
Result, по которому можно понять, как выполнился запрос.
$client->setOptions([CURLOPT_TIMEOUT => 5]);
$result = $client->get('http://example.com');
echo $result->hasError() ? 'ERROR' : $result->getBody();