CURL: код 0 от прокси после CONNECT? - PullRequest
1 голос
/ 22 декабря 2009

Я пытаюсь протестировать приведенную ниже функцию, но каждый раз, когда я пытаюсь использовать прокси-сервер любого типа (сейчас я пробовал 15 ), я обычно получаю ту же ошибку:

Received HTTP code 0 from proxy after CONNECT 

Вот функция, с ней что-то не так? Это могут быть только прокси, которые я использую, но я пробовал несколько раз.

function getPage($proxy, $url, $referer, $agent, $header, $timeout) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);

    $result['EXE'] = curl_exec($ch);
    $result['INF'] = curl_getinfo($ch);
    $result['ERR'] = curl_error($ch);

    curl_close($ch);

    return $result;
}

Кроме того, в общем, я могу улучшить это?

Я ценю любую помощь.

Обновление

Когда я представил это, я попробовал другой прокси, и это сработало!

Другой вопрос все еще стоит, как я могу улучшить вышеупомянутое. Выполнение занимает около 3-4 секунд, все, что я могу сделать, или это слишком мало?

1 Ответ

1 голос
/ 22 декабря 2009

Я знаю, что вы вроде ответили на вашу первую проблему, но код 0 не является действительным кодом статуса http. Все они должны начинаться с 1 (информационный), 2 (успех), 3 (перенаправление), 4 (ошибка клиента) или 5 (ошибка сервера). Я был бы очень заинтересован, если бы кто-нибудь знал, почему вы можете получить этот код. Поиск по сайту libcurl ничего не дал.

(Более подробная информация здесь, если вы заинтересованы:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlt)


По второму вопросу, я думаю, вам нужно будет найти, где была самая длинная операция. Функция microtime() может быть вам полезна здесь. Документация для microtime () содержит несколько примеров сценариев, которые помогут вам использовать таймер.

Я подозреваю, однако, что большую часть 3-4 секунд можно было бы ждать, чтобы получить ответ через прокси на curl_exe($ch).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...