0

さて、私が基本的に望んでいるのは、「proxies.txt」のプロキシが使用されてから「used.txt」などのファイルに移動されるため、新しい未使用のプロキシのみが「proxies.txt」に残ります私が持っているID取得プログラムは、開始されるたびにリストの一番上から開始され、IDは各プロキシから24時間に1回しか取得できないためです。

{
switch(@$argv[1]) {
    case '0':
    default:
        $list = fopen('proxies.txt', 'r');
        while(!feof($list))
        {
            $proxy = fgets($list);
            $idGen->generate($proxy);
        }
        fclose($list);
    break;
}
$loop++;
usleep(50000);
$idGen->report('Starting loop #'.$loop);

}

また、デッドプロキシを削除する方法はありますか?現在のカール設定は

$tries = 0;
    $xData = '';
    $timeout = 3;
    //echo "Tries -> ";
    while($xData=='' && $tries < 3) {
        $ch = curl_init(); //curl init :D
        curl_setopt($ch,    CURLOPT_URL,                'website.com/idauth.php?t='.rand(100000000000,1000000000000000000000000000000000)); //url
        curl_setopt($ch,    CURLOPT_PROXY,              $proxy);
        curl_setopt($ch,    CURLOPT_RETURNTRANSFER,     1);
        curl_setopt($ch,    CURLOPT_CONNECTTIMEOUT,     $timeout);
        curl_setopt($ch,    CURLOPT_TIMEOUT,            $timeout);
        $data = curl_exec($ch);
        curl_close($ch);
        $rdata = $data;
        if(@$data{0} == '<') { 
            return;//Bad Proxy Detected.
        }
        if(strpos($data, 'Not Found') != FALSE) { 
            $data = '&UserId=0&k1=0&k2=0';
        }
        if($data != '&UserId=0&k1=0&k2=0') {
            if(strpos($data, '&k2=0') != FALSE) { 
                $data = '&UserId=0&k1=0&k2=0';
            } else {
                $xData = $data;
            }
        } else {
            echo $data."\n";
        }
        $tries++;
        }

    if($xData=='') {
        return;//Dead Proxy
    }
4

1 に答える 1

0

プロキシ リスト全体を配列にロードし、操作を行い、完了したらファイル全体を書き直します。

問題に自然に思われるリクエストでマルチスレッドを実行している場合、データベースでより適切に機能する可能性があります。その場合は、削除するなどしてください。

トップ関数の範囲外のどこか:

$proxies = array()
function load_proxies() {
        global $proxies;
        $list = fopen('proxies.txt', 'r');
        while(!feof($list))
        {
            $proxy = fgets($list);
            $proxies[] = $proxy;
        }
        fclose($list);
}

function get_proxy() {
    global $proxies;
    return array_pop($proxies);
    //here you may want to save over proxies.txt, and write out the chosen proxy to used.txt
}
于 2013-05-29T17:34:20.843 に答える