Как сделать так, чтобы cURL возвращал false, если сервер не отвечает через 2 секунды?
Я получил эту функцию, теперь иногда, когда сайт не работает или загружается в течение длительного времени, это замедляет время загрузки моего сайта.
Есть ли способ заставить его просто вернуть false, если сервер не отвечает в течение 2 секунд? Как вы можете видеть, я попробовал это с CURLOPT_CONNECTTIMEOUT, но это, похоже, не помогло.
function url_get_contents($url)
{
if (!function_exists('curl_init'))
{
die('Exit: CURL is not installed or enabled!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
4 ответов:
CURLOPT_CONNECTTIMEOUT - количество секунд ожидания при попытке соединять. Используйте 0, чтобы ждать бесконечно.
CURLOPT_TIMEOUT - максимальное значение количество секунд для выполнения функций cURL.
Используйте CURLOPT_TIMEOUT
Краткий ответ:
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
Цитирую из PHP cURL documentation :CURLOPT_CONNECTTIMEOUT: количество секунд ожидания при попытке соединять. Используйте 0, чтобы ждать бесконечно.
CURLOPT_TIMEOUT максимальное количество секунд для разрешения функций cURL во исполнение.
CURLOPT_CONNECTTIMEOUTограничивает время ожидания cURL для установления соединения. Сервер все еще должен найти контент и отправить его, что обычно занимает больше времени.CURL имеет другой вариант,
CURLOPT_TIMEOUT, который является ограничением, установленным на функциюcurl_exec(). Думайте об этом как о пределе времени, которое может занять функция, чтобы вернуть что-то. Это похоже на то, что вы ищете:curl_setopt($ch, CURLOPT_TIMEOUT, 2);
Я предполагаю, что вам нужно использовать функцию curl_getinfo ()
Смотрите это http://php.net/manual/en/function.curl-getinfo.php
Код будет выглядеть так
$output = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
Comments