<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:10pt">А у меня зависает.<br><div><span><br></span></div><div style="display: block;" class="yahoo_quoted"> <br> <br> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 10pt;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> On Wednesday, 16 October 2013, 13:02, Гришаев Анатолий <0body0@rambler.ru> wrote:<br> </font> </div> <div class="y_msg_container">Перед форком или сразу после нужно очистить кэш DNS:<br clear="none">$AnyEvent::DNS::RESOLVER = undef;<br clear="none"><br clear="none"><br clear="none">Вот уже работающий пример:<br
clear="none">==============================<br clear="none">$| = 1;<br clear="none">use strict;<br clear="none">use warnings;<br clear="none">use AnyEvent::DNS ();<br clear="none"><br clear="none">use EV;<br clear="none">$EV::FLAG_FORKCHECK = 1;<br clear="none">use AnyEvent;<br clear="none">use AnyEvent::HTTP;<br clear="none"><br clear="none">my $URL = "<a shape="rect" href="http://www.bing.com/" target="_blank">http://www.bing.com</a>";<br clear="none"><br clear="none">if ($ARGV[0]) {<br clear="none"> my $w = AnyEvent->condvar;<br clear="none"> http_get $URL, persistent => 0, keepalive => 0, sub {<br clear="none"> print ". $_[1]{Status} $_[1]{Reason} $_[1]{URL}; $$\n";<br clear="none"> $w->send;<br clear="none"> };<br clear="none"> $w->recv;<br clear="none"> print "...\n";<br clear="none">}<br clear="none"><br
clear="none">use IO::Socket;<br clear="none">socketpair(my $child, my $parent, AF_UNIX, SOCK_STREAM, PF_UNSPEC) or <br clear="none">die "socketpair: $!";<br clear="none"><br clear="none">$AnyEvent::DNS::RESOLVER = undef;<br clear="none">my $kid_pid = fork;<br clear="none">defined $kid_pid or die "Can't fork: $!";<br clear="none"><br clear="none">unless ($kid_pid) {<br clear="none"> close $child;<br clear="none"> my $w = AnyEvent->condvar;<br clear="none"> my $wr = AnyEvent->io(fh => $parent, poll => "r", cb => sub {<br clear="none"> my $len = sysread $parent, my $buf, 1024;<br clear="none"> unless ($len) {<br clear="none"> # print"child EXIT\n";<br clear="none"> exit;<br clear="none"> };<br clear="none">
print $buf;<br clear="none"><br clear="none"> http_get $URL, persistent => 0, sub {<br clear="none"> print "+ $_[1]{Status} $_[1]{Reason} $_[1]{URL}; $$\n";<br clear="none"> syswrite $parent, "pong\n";<br clear="none"> };<br clear="none"> });<br clear="none"> $w->recv;<br clear="none"> exit;<br clear="none">} else {<br clear="none"> close $parent;<br clear="none"> my $i = 0;<br clear="none"> my $w = AnyEvent->condvar;<br clear="none"> my $wr = AnyEvent->io(fh => $child, poll => "r", cb => sub {<br clear="none"> sysread $child, my $buf, 1024;<br clear="none"> # print $buf;<br clear="none"> if (++$i > 3) {<br
clear="none"> # print "parent EXIT\n";<br clear="none"> exit;<br clear="none"> } else {<br clear="none"> syswrite $child, "ping $i\n";<br clear="none"> }<br clear="none"> });<br clear="none"> syswrite $child, "ping $i\n";<br clear="none"> $w->recv;<br clear="none">}<br clear="none"><br clear="none">==============================<br clear="none"><br clear="none"><br clear="none">-- <br clear="none">С уважением Анатолий.<div class="yqt0443567821" id="yqtfd15139"><br clear="none">-- <br clear="none">Moscow.pm mailing list<br clear="none"><a shape="rect" ymailto="mailto:moscow-pm@pm.org" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a shape="rect" href="http://moscow.pm.org/"
target="_blank">http://moscow.pm.org</a><br clear="none"></div><br><br></div> </div> </div> </div> </div></body></html>