« 久しぶりに CCOC'S | メイン | 腹へった。金が無い。 »
2004年10月30日
RSS Robot (2)
RSS Robot の挙動がおかしいので修正してみた。おかしいと感じたのは、リクエストを送信する時のタイムアウト処理。
修正後は、以下のようにした。
foreach my $href (@href) {
eval {
$SIG{'ALRM'} = sub {
$out_sock++;
next;
};
alarm 1;
my $sock = IO::Socket::INET->new("$s{$href}:80");
if (defined $sock) {
$selecter->add($sock);
$p{$sock} = $href;
print $sock "GET /$r{$href} HTTP/1.0\r\n";
print $sock "Host: $s{$href}:80\r\n";
print $sock "\r\n";
$sock->flush();
} else {
$out_sock++;
}
alarm 0;
};
}
やばいなぁ。僕は alarm と eval の使い方をいまいち分かっていない。この書き方で正しいかどうかも微妙だし。
【関連記事】
・RSS Robot (2004年10月29日)
2004年10月30日 22:35 | Programming