|
|
|
| приветствую всех =) пытаюсь сделать неболшого прокси чекера который бы чекал не более 20 прокси =) мне больше и не нада главное чтобы один был из списка прокси рабочий (а так и будет)
вот простенький код
$testpage = "http://www.google.com";
foreach($proxies as $proxy)
{
$ch = curl_init($testpage);
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_HTTPTUNNELPROXY,$proxy);
$page = curl_exec($ch);
curl_close($ch);
$check = stripos($page,'</html>');
if($check > 0) {echo $proxy." Works!";}
else
{echo $proxy." Is Dead!";}
}
|
$proxies содержит массив прокси <= 20
и даже при наличии такого маленького количества прокси сервер возвращает
504 Gateway Time-out
--------------------------------------------------------------------------------
nginx/0.5.31
|
думаю здесь нужно делать проверку многопотоковую... но перечитав несколько примеров многопотокового curl так и не могу написать рабочий пример... может кто нибудь поможет или натолкнет как переделать приведенный код в многопоточный
заранее огромное спасибо! | |
|
|
|
|
|
|
|
для: eclipse
(15.09.2008 в 10:57)
| | нарыл следующие функции
function get($url, $ref, $proxy)
{
$curl = curl_init();
$useragent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.12";
$headers = array("Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7", "Accept-Language: en-us,en;q=0.5", "Connection: keep-alive", "Keep-Alive: 300");
//curl options
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_REFERER, $ref);
curl_setopt($curl, CURLOPT_PUT, false);
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
//curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_PROXY, $proxy);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($curl, CURLOPT_POST, 0);
$res = curl_exec($curl); //Execute curl
}
function checkProxy($proxy)
{
$res = get('http://www.google.com', 'http://www.yahoo.com', $proxy);
if ($res == '') return false;
else return true;
}
|
перестала вылазить ошибка сервера... но все прокси при данной проверке
if ($res == '') return false;
else return true;
|
return false;
проверил список прокси через http://www.samair.ru/proxy-checker/index.php все прокси были bad или timeout но один все таки оказался рабочим
можжет нужно какое то другое условие для проверки???
но вопрос многопоточности также остается =) samair мне кажется ещё медленнее проверяет чем скрипт который я нашел
кста пробовал делать таймаут больше, думал это повлияет на проверку но при таймаауте в 30 снова вылазит та же ошибка сервера, поэтому пришлось оставить 20... | |
|
|
|
|
|
|
|
для: eclipse
(15.09.2008 в 11:36)
| | блин снова стала вылазить 504 ошибка даже уменьшая таймаут... можжет быть кто нибудь расскажет с чем это может быть связано???
учитывая то что прокси мало можно и про многопоточность забыть лишь бы не было ошибки 504 и чекало верно...
хотя все равное интересно как ее реализовать.... | |
|
|
|