[Moscow.pm] AnyEven::HTTP перед и после fork с сокетами между процессами
Гришаев Анатолий
0body0 на rambler.ru
Ср Окт 16 03:50:39 PDT 2013
А если исключить ресолвер как в предыдущем письме?
Тоже зависает?
16.10.2013 14:46, ksvs пишет:
> А у меня зависает.
>
>
>
> On Wednesday, 16 October 2013, 13:02, Гришаев Анатолий
> <0body0 на rambler.ru> wrote:
> Перед форком или сразу после нужно очистить кэш DNS:
> $AnyEvent::DNS::RESOLVER = undef;
>
>
> Вот уже работающий пример:
> ==============================
> $| = 1;
> use strict;
> use warnings;
> use AnyEvent::DNS ();
>
> use EV;
> $EV::FLAG_FORKCHECK = 1;
> use AnyEvent;
> use AnyEvent::HTTP;
>
> my $URL = "http://www.bing.com <http://www.bing.com/>";
>
> if ($ARGV[0]) {
> my $w = AnyEvent->condvar;
> http_get $URL, persistent => 0, keepalive => 0, sub {
> print ". $_[1]{Status} $_[1]{Reason} $_[1]{URL}; $$\n";
> $w->send;
> };
> $w->recv;
> print "...\n";
> }
>
> use IO::Socket;
> socketpair(my $child, my $parent, AF_UNIX, SOCK_STREAM, PF_UNSPEC) or
> die "socketpair: $!";
>
> $AnyEvent::DNS::RESOLVER = undef;
> my $kid_pid = fork;
> defined $kid_pid or die "Can't fork: $!";
>
> unless ($kid_pid) {
> close $child;
> my $w = AnyEvent->condvar;
> my $wr = AnyEvent->io(fh => $parent, poll => "r", cb => sub {
> my $len = sysread $parent, my $buf, 1024;
> unless ($len) {
> # print"child EXIT\n";
> exit;
> };
> print $buf;
>
> http_get $URL, persistent => 0, sub {
> print "+ $_[1]{Status} $_[1]{Reason} $_[1]{URL}; $$\n";
> syswrite $parent, "pong\n";
> };
> });
> $w->recv;
> exit;
> } else {
> close $parent;
> my $i = 0;
> my $w = AnyEvent->condvar;
> my $wr = AnyEvent->io(fh => $child, poll => "r", cb => sub {
> sysread $child, my $buf, 1024;
> # print $buf;
> if (++$i > 3) {
> # print "parent EXIT\n";
> exit;
> } else {
> syswrite $child, "ping $i\n";
> }
> });
> syswrite $child, "ping $i\n";
> $w->recv;
> }
>
> ==============================
>
>
> --
> С уважением Анатолий.
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org <mailto:moscow-pm на pm.org> | http://moscow.pm.org
> <http://moscow.pm.org/>
>
>
>
>
--
С уважением Анатолий.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131016/0108adc8/attachment.html>
Подробная информация о списке рассылки Moscow-pm