Как сделать так, чтобы 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;
}
775   4  

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

    Ничего не найдено.