За последние 24 часа нас посетили 53427 программистов и 1715 роботов. Сейчас ищут 935 программистов ...

Проксичекер на многопоточном CURL

Тема в разделе "PHP для новичков", создана пользователем ladzio, 18 дек 2010.

  1. ladzio

    ladzio Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    8
    Симпатии:
    0
    Вообщем сделал чекер прокси на курле с использованием многопоточности и без нее. В итоге при однопоточной проверке получается намного больше удачных коннектов чем при многопоточной. Что я сделал не так?

    код скрипта
    PHP:
    1. <?
    2.  
    3. function ch($pr)
    4. {
    5. $ch = curl_init();
    6. curl_setopt($ch, CURLOPT_URL, "http://www.cmyip.com/");
    7. curl_setopt($ch, CURLOPT_HEADER, 0);
    8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
    9. curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    10. curl_setopt($ch, CURLOPT_PROXY, $pr);
    11. curl_setopt($ch, CURLOPT_PROXYTYPE , CURLPROXY_SOCKS5);
    12. return $ch;
    13. }
    14. $proxies = array();
    15. $proxies = array_unique(file('proxies.txt'));
    16.  
    17. $cmh = curl_multi_init();
    18. for($i=0;$i<count($proxies);++$i)
    19. {
    20. $ch=ch($proxies[$i]);
    21. }
    22.  
    23.  
    24.  
    25. $active = null;
    26. do {
    27.     echo $mrc = curl_multi_exec($cmh, $active);
    28. }
    29. while ($mrc == CURLM_CALL_MULTI_PERFORM);
    30.  
    31.  
    32. while ($active) {  
    33.     if (curl_multi_select($cmh) != -1) {  
    34.         do {  
    35.             $mrc = curl_multi_exec($cmh, $active);  
    36.         } while ($mrc == CURLM_CALL_MULTI_PERFORM);  
    37.     }  
    38. }  
    39.  
    40.  
    41.  
    42. ?>