cURL Проверка на время ожидания - PullRequest
11 голосов
/ 15 февраля 2011

Я знаю, как установить тайм-аут в cURL, но я хочу предупредить пользователя, что время запроса истекло.

Я создал сценарий ajax, который позволяет пользователю запрашивать данные с различных страховых сайтов и объединять их в список. Если какой-либо из сайтов страхования не отвечает в течение определенного времени, я хочу предупредить пользователя о том, что текущая цитата из этой компании в данный момент недоступна.

Возвращает ли cURL что-либо, сигнализирующее об истечении времени ожидания?

Ответы [ 2 ]

14 голосов
/ 15 февраля 2011

curl_errno() возвращает 28, если время операции истекло.См. http://curl.haxx.se/libcurl/c/libcurl-errors.html для других кодов ошибок.

2 голосов
/ 15 февраля 2011

Или другое решение, которое может охватить еще большее количество случаев (истекло время ожидания сервера, ошибка сервера с пустой страницей) - проверить, отличается ли результат вашей функции get_url от "" или FALSE.

Пример get_urlфункция:

function get_url($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $tmp = curl_exec($ch);
    curl_close($ch);
    return $tmp;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...