Показать сообщение отдельно

  #27  
Старый 13.02.2009, 23:55
eLWAux
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
С нами: 9423746

Репутация: 2399


По умолчанию

кто просил обновить:

парсер (perl):
PHP код:
use warnings;
use 
IO::Socket;
use 
threads;
use 
threads::shared;
use 
Fcntl ':flock';

my $dig shared shift || 9423791 #ID начала парсинга (парсинг по убыванию)
$threads =  shift || 10                #Кол-во потоков
$fname   'accs.txt'               #Куда сохранять


$time      time
printf "Started at ".localtime()."\n";

for(
0..$threads) {$trl[$_] = threads->create(\&Brut$_);}
for(@
trl) { $_->join; }

sub Brut
{
    while(
$dig)
    {    
        
my $re ='';
        {
lock($dig); 
        
$re "GET http://www.garena.com/forum/viewpro.php?uid=".$dig." HTTP/1.1\nHost: www.garena.com\n\n"$dig--;}
        
my $sock sock();
        print 
$sock $re
        
        
read($sock,my $answ,10000);
        if(
$answ =~ /<div class="header" style="text-align:left">(.*?)\'s/) {
            print $dig."::".$1."\n";
            open(FILE, ">>$fname") || die("Could not open $fname\n");
            flock(FILE, LOCK_EX);
            print FILE "$1\n";
            flock(FILE, LOCK_UN);
            close(FILE);
        }
        close($sock);
    }            
}

sub sock {
my $sock;
do {
    $sock = new IO::Socket::INET 
        (
        PeerAddr => '
garena.com',
           PeerPort => 80, 
           PeerProto => '
tcp', 
           TimeOut => 10
        ) or print "Can'
t connect\n";
    } while (!
$sock);
return 
$sock;
}

$time = time-$time;
printf "
Finished at ".localtime()."\n";
printf "
Time elapsed$time sec\n";
#(c)Kaimi