Я хочу использовать multi-cURL с прокси-серверами, но я не могу понять, как проверить, было ли каждое прокси-соединение успешным. С обычным одиночным cURL я делаю простой цикл, который длится так долго, что curl_errno не равен 0.
Но как сделать с multi-cURL?
Благодаря!
У вас может быть простой прокси-контролер, прежде чем запускать запрос на многострочный
Простой прокси-сервер
function __proxyChecker($proxy) { $ch = curl_init("http://google.com"); curl_setopt($ch, CURLOPT_TIMEOUT, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_NOBODY, true); $handle = curl_exec($ch); curl_close($ch); return $handle ; }
Применение
$proxies = "211.136.10.29:80 88.146.161.215:3128 211.136.10.29:80 61.35.0.39:6515 77.78.197.15:8080 211.161.152.106:80"; $proxies = explode("\n", $proxies); //shuffle($proxies); $url = "http://google.com"; $handle = curl_init($url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); echo "<pre>"; foreach ( $proxies as $proxy ) { $proxy = trim($proxy); if(empty($proxy)) continue ; if(__proxyChecker($proxy)) echo $proxy , " - ok \n"; else echo $proxy , " - bad \n"; }
Вывод
211.136.10.29:80 - ok 88.146.161.215:3128 - ok 211.136.10.29:80 - ok 61.35.0.39:6515 - bad 77.78.197.15:8080 - bad 211.161.152.106:80 - ok