问个问题, lwp 为什么会 挂 在那里?

问个问题, lwp 为什么会 挂 在那里?

LABEL:
print "\tGetting Content...\n";
        my $content = eval {
                local $SIG{ALRM} = sub { die; };
                alarm 10;
                my $t = eval {get($url) or die};
                alarm 0;
                die if $@;

                $t;
        };

        if ($@) {
                print "---> Try again after 5 Seconds ... <---\n";
                sleep 5;
                goto LABEL;
        };

----------------------

这段代码有时候运行好好的,有时候在打印了 Getting Content... 之后就挂在那里了,半天也不动。
我设置了 alarm 的了,为什么它还挂?谁知道?

谢谢!
ALRM 太低级了,只能打断系统调用,稍微高级一点的封装都是可以自动重启的。

你可以抓包看一看,再看看 LWP 的超时参数。


QUOTE:
原帖由 flw 于 2008-12-22 11:14 发表
ALRM 太低级了,只能打断系统调用,稍微高级一点的封装都是可以自动重启的。

你可以抓包看一看,再看看 LWP 的超时参数。

哦,版主给个演示吧
windows上的alarm是有问题的
典型的如
io操作会阻塞alarm
不知道你用的是什么平台