Я пытаюсь проверить функцию ниже, но каждый раз, когда я пытаюсь использовать какой-либо прокси-сервер (я уже пробовал около 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 секунд, что я могу сделать, или это слишком мало?
Я знаю, что вы ответили на свою первую проблему, но код 0
не является допустимым кодом статуса http. Все они должны начинаться с 1 (информационный), 2 (успех), 3 (перенаправление), 4 (ошибка клиента) или 5 (ошибка сервера). Я был бы очень intereted, если кто-нибудь знает, почему вы можете получить этот код. Поиск на сайте libcurl ничего не принес.
(Более подробная информация здесь, если вы заинтересованы:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlt )
По второму вопросу, я думаю, вам нужно найти, где была самая длинная операция. Функция microtime()
может быть вам полезна здесь. В документации для microtime () есть несколько примеров сценариев, которые помогут вам использовать таймер.
Я подозреваю, что большинство из 3-4 секунд могло ждать ответа через прокси-сервер curl_exe($ch)
.