« 久しぶりに 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

トラックバック

コメント