Pjeroo
@Pjeroo
Веб-разработчик

Как правильно поймать ошибку Could not resolve host в curl_multi php?

Вот код для асинхронных запросов к страницам по курлу почти из официальной документации:

$urls = array('');

$chm = curl_multi_init();
$tasks = array();

foreach ($urls as $url) {
    $ch = curl_init('http://' . $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $tasks[$url] = $ch;

    curl_multi_add_handle($chm, $ch);
}

$active = null;
do {
    $mrc = curl_multi_exec($chm, $active);
}
while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && ($mrc == CURLM_OK)) {
    if (curl_multi_select($chm) != -1) {
        do {
            $info = curl_multi_info_read($chm);
            if ($info['msg'] == CURLMSG_DONE) {
                $ch = $info['handle'];
                $url = array_search($ch, $tasks);
                $tasks[$url] = array(
                    'http_code' => curl_getinfo($ch, CURLINFO_HTTP_CODE),
                    'content' => curl_multi_getcontent($ch));
                curl_multi_remove_handle($chm, $ch);
                curl_close($ch);
            }
        }
        while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }

    $mrc = curl_multi_exec($chm, $active);
}
curl_multi_close($chm);


Он работает отлично, но есть одна вещь, над которой я бьюсь уже несколько часов. В данном случае получается лишь отлавливать успешно завершенные операции, но не ошибки связанные с опечатками в url. Как ловить эти ошибки?
  • Вопрос задан
  • 640 просмотров
Пригласить эксперта
Ответы на вопрос 1
He11ion
@He11ion
PHP-monkey
curl_multi_strerror пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы