Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: curl многопоточность
 
 автор: eclipse   (15.09.2008 в 10:57)   письмо автору
 
 

приветствую всех =) пытаюсь сделать неболшого прокси чекера который бы чекал не более 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 в 11:36)   письмо автору
 
   для: 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 в 16:17)   письмо автору
 
   для: eclipse   (15.09.2008 в 11:36)
 

блин снова стала вылазить 504 ошибка даже уменьшая таймаут... можжет быть кто нибудь расскажет с чем это может быть связано???

учитывая то что прокси мало можно и про многопоточность забыть лишь бы не было ошибки 504 и чекало верно...

хотя все равное интересно как ее реализовать....

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования