многопоточный носко4екер на php ..

Discussion in 'PHP' started by 159932, 18 Dec 2008.

  1. 159932

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

    Joined:
    28 Sep 2007
    Messages:
    587
    Likes Received:
    462
    Reputations:
    5
    PHP:
    <?php
    /*######################
    многопоточный носко4екер
    по мотивам скрипта де-визбла на питоне ..
    [ - надеюсь он не в обиде за идейный плагиат - ]

    (C) 159932
    ######################*/
    set_time_limit(0);
    error_reporting(0);

    $cout 10;                    #    кол-во потоков, советую не ставить много, если чек происходит с локала, да и при маленьком канале тем более..
    $time 10;                    #    таймаут, чем больше потоков, тем больше таймаут надо ставить .. 
    $filn 'sock.txt';            #    файл с носкаме
    $good 'good.txt';            #    файл куда писать гут носки после чека
    $deli '0';                    #    0 - ничего не делать с файлами;
                                    #    1 - удалить файл с носками после чека;    
                                    #    2 - удалить старый good.txt 
                                    #    3 - удалить файл с носками, и старый good.txt 
                                    #    кавычки для понту :D


    ############################################################################

    $file[0] = array_unique(file($filn));
    if (
    sizeof($file[0]) < $cout$file array_chunk($file[0], $cout);

    if (
    $deli == 1unlink($filn);
    if (
    $deli == 2unlink($good);
    if (
    $deli == 3) { unlink($filn); unlink($good);}
        
    $fin fopen($good'a');

    foreach (
    $file as $ips) {
        
    $hren = array();
        
    $mh curl_multi_init();
            foreach (
    $ips as $ip) {
                
    $ip trim($ip);
                if (!
    preg_match('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}#',$ip)) continue;
                    
    $hren[$ip] = curl_init('http://cmyip.com/');
                    
    curl_setopt($hren[$ip], CURLOPT_RETURNTRANSFER,     1);
                    
    curl_setopt($hren[$ip], CURLOPT_TIMEOUT,            $time);
                    
    curl_setopt($hren[$ip], CURLOPT_PROXY,                 $ip);
                    
    curl_setopt($hren[$ip], CURLOPT_PROXYTYPE,             CURLPROXY_SOCKS5);
                    
    curl_multi_add_handle ($mh,$hren[$ip]);
            }
            if (!
    sizeof($hren)) continue;

            do {
                
    $mrc curl_multi_exec($mh$active);
            } while (
    $mrc == CURLM_CALL_MULTI_PERFORM);

            while (
    $active and $mrc == CURLM_OK) {
                if (
    curl_multi_select($mh) != -1) {
                    do {
                        
    $mrc curl_multi_exec($mh$active);
                    } while (
    $mrc == CURLM_CALL_MULTI_PERFORM);
                }
            }

            foreach (
    $hren as $i => $ip) {
                
    $res[$i]=curl_multi_getcontent($hren[$i]);
                
    curl_multi_remove_handle($mh,$hren[$i]);
                
    curl_close($hren[$i]);
            }
            
            
    curl_multi_close($mh);
            
        foreach (
    $res as $ip=>$data) {
            
    $ip explode(':',$ip);
            if (
    strpos($data$ip[0]) !== falsefwrite($fin$ip[0].':'.$ip[1]."\r\n");
        }
    }
    fclose($fin);
    ?>
     
    11 people like this.
  2. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,548
    Likes Received:
    1,397
    Reputations:
    612
    в полезных скриптах место )