Mr Lamb,<br><br>no seu código ce tá criando socket tipo UNIX (arquivo), e no erro do log tá aparecendo socket tipo INET (TCP)... tá certo isso?<br><br>[]s,<br>Russian<br><br><div class="gmail_quote">2009/11/27 Andre Carneiro <span dir="ltr"><<a href="mailto:andregarciacarneiro@gmail.com">andregarciacarneiro@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Salve pessoal!<br><br><br>Estou tendo um problema utilizando o módulo forks.<br><br>Enquanto eu não faço o 'daemonize' no meu daemon, funciona tudo blz. No entanto, quando o 'daemonize' acontece, tudo que é executado através de forks gera "conexão recusada" no socket. <br>
<br><code><br>.<br>.<br>.<br>use App::Daemon qw( daemonize );<br>use POSIX qw(:signal_h );<br>use Getopt::Long;<br>use IO::Socket::UNIX;<br><br>#DAEMON<br> my $SOCKFILE = '/tmp/socktest';<br> unlink $SOCKFILE or die $! if -e $SOCKFILE;<br>
daemonize() if $daemonize == 1;<br> my $usock = IO::Socket::UNIX->new( Type => SOCK_STREAM ,<br> Local => '/tmp/socktest' ,<br> Listen => 1<br>
) or die $!;<br> my $r = ();<br> chmod 0777 , $SOCKFILE;<br> my %Process;<br><br> while(1){<br> if(my ($r) = $usock->accept){<br> #c<br><br> }else{<br>
die "\nSOCKET NAO FOI ACEITO!!! $! $@\n";<br> }<br> }<br><br><br></code><br>#cliente<br>.<br>.<br>.<br>use IO::Socket::UNIX;<br>use Getopt::Std;<br>use Config::General;<br>use Data::Dumper;<br>
<br>my $conf_obj = Config::General->new('config/general.conf');<br>my %config = $conf_obj->getall();<br>my $SOCKETFILE = '/tmp/socktest';#$config{defaults}->{scap_socket}; <br><br>@ARGV < 1 and die "Parametros invalidos\n";<br>
<br>my $usock = new IO::Socket::UNIX(<br> Type => SOCK_STREAM,<br> Peer => $SOCKETFILE,<br>) or die "Impossivel abrir Socket: $! $@ em " . $SOCKETFILE;<br><br><br><br>my %args;<br>getopts("r:s:p:", \%args);<br>
if($args{r}) {<br> print "Executar Spider $args{r} $args{p}\n";<br> print $usock "run $args{r} $args{p}" or die $!;<br>}<br>elsif($args{s}) {<br> print "Parar Spider $args{s}\n";<br>
print $usock "stop $args{s}";<br>}<br><br><br>O cliente acima instancia uma classe que executa o seguinte trecho de código abaixo...<br><br><br><code><br>
.<br>.<br>.<br><br>use forks;<br>use MooseX::Singleton;<br>use Config::General;<br>.<br>.<br>.<br><br>foreach my $t(@{$thread}){ <br> $self->log_spider->write("debug","Thread $i");<br>
eval{$Threads[$i] = threads->create('init_thread',$self,$t,$cf)}; <br> if($@){<br> $self->log_spider->write("error","Erro ao criar Thread $i: $@ $!");<br>
exit(0);<br><br> }else {<br> $self->stat->dbic($conns->[$i]); #setando a conex?o do pool de conex?es.<br> $i++;<br> }<br> }<br>
foreach my $t (1..$#Threads) {$Threads[$t]->join;}<br>.<br>.<br>.<br>.<br><br>sub init_thread {<br> my ($self,$thread) = @_;<br> #várias ações aqui...<br> sleep 1;<br>}<br><br><br>
</code><br><br clear="all"><br><br>Quando a coisa toda é executada, o que ocorre é isso:<br><br><br><trecho do log><br><br><br>[Thu Nov 26 18:57:16 2009] [SCAP2] [debug] Thread 1<br>[Thu Nov 26 18:57:17 2009] [SCAP2] [error] Erro ao criar Thread 1: (13981): Couldn't connect to query server: IO::Socket::INET: connect: Conex�o recusada at /usr/local/lib/perl/5.10.0/<a href="http://forks.pm" target="_blank">forks.pm</a> line 3592<br>
threads::_croak('Couldn\'t connect to query server: IO::Socket::INET: connect:...') called at /usr/local/lib/perl/5.10.0/<a href="http://forks.pm" target="_blank">forks.pm</a> line 2113<br> threads::_init_thread('HASH(0x98d7f50)', '', undef, undef) called at /usr/local/lib/perl/5.10.0/<a href="http://forks.pm" target="_blank">forks.pm</a> line 761<br>
threads::new('threads', 'init_thread', 'Spider=HASH(0xaa1af10)', 'HASH(0xaa6e980)', 'HASH(0xa8fdc30)') called at /home/andre/git/scap/lib/Spider.pm line 264<br> eval {...} called at /home/andre/git/scap/lib/Spider.pm line 264<br>
Spider::load_sources('Spider=HASH(0xaa1af10)', 'ARRAY(0xaa6e920)', 'HASH(0xa8fdc30)', 'HASH(0xaa6e120)') called at /home/andre/git/scap/lib/Spider.pm line 123<br> Spider::start('Spider=HASH(0xaa1af10)') called at ./scap2d line 251<br>
main::run('ARRAY(0xa9e1bb8)', 'Spider=HASH(0xaa1af10)') called at ./scap2d line 148<br> main::start('Getopt::Long::CallBack=HASH(0xa9f0650)', 1) called at /usr/share/perl/5.10/Getopt/Long.pm line 593<br>
eval {...} called at /usr/share/perl/5.10/Getopt/Long.pm line 592<br> Getopt::Long::GetOptionsFromArray('ARRAY(0x8c5c420)', 'start', 'CODE(0xa9de550)', 'stop', 'CODE(0xa9e21b8)', 'restart', 'CODE(0x90efa48)', 'help', 'CODE(0x90efa48)', ...) called at ./scap2d line 72<br>
Conex�o recusada<br>[Thu Nov 26 18:57:17 2009] [SCAP2] [debug] Thread 2<br>[Thu Nov 26 18:57:17 2009] [SCAP2] [debug] Thread 3<br>[Thu Nov 26 18:57:17 2009] [SCAP2] [error] Erro ao criar Thread 2: (13982): Couldn't connect to query server: IO::Socket::INET: connect: Conex�o recusada at /usr/local/lib/perl/5.10.0/<a href="http://forks.pm" target="_blank">forks.pm</a> line 3592<br>
threads::_croak('Couldn\'t connect to query server: IO::Socket::INET: connect:...') called at /usr/local/lib/perl/5.10.0/<a href="http://forks.pm" target="_blank">forks.pm</a> line 2113<br> threads::_init_thread('HASH(0xad41528)', '', undef, undef) called at /usr/local/lib/perl/5.10.0/<a href="http://forks.pm" target="_blank">forks.pm</a> line 761<br>
threads::new('threads', 'init_thread', 'Spider=HASH(0xaa1af10)', 'HASH(0xaa6e910)', 'HASH(0xa8fdc30)') called at /home/andre/git/scap/lib/Spider.pm line 264<br> eval {...} called at /home/andre/git/scap/lib/Spider.pm line 264<br>
Spider::load_sources('Spider=HASH(0xaa1af10)', 'ARRAY(0xaa6e920)', 'HASH(0xa8fdc30)', 'HASH(0xaa6e120)') called at /home/andre/git/scap/lib/Spider.pm line 123<br> Spider::start('Spider=HASH(0xaa1af10)') called at ./scap2d line 251<br>
main::run('ARRAY(0xa9e1bb8)', 'Spider=HASH(0xaa1af10)') called at ./scap2d line 148<br> main::start('Getopt::Long::CallBack=HASH(0xa9f0650)', 1) called at /usr/share/perl/5.10/Getopt/Long.pm line 593<br>
eval {...} called at /usr/share/perl/5.10/Getopt/Long.pm line 592<br> Getopt::Long::GetOptionsFromArray('ARRAY(0x8c5c420)', 'start', 'CODE(0xa9de550)', 'stop', 'CODE(0xa9e21b8)', 'restart', 'CODE(0x90efa48)', 'help', 'CODE(0x90efa48)', ...) called at ./scap2d line 72<br>
Conex�o recusada<br><br><br><br></trecho do log><br><br><br><br>Alguém já passou por isso?<br><br><br><br>Cheers!<br><font color="#888888"><br><br><br>-- <br>André Garcia Carneiro<br>Analista/Desenvolvedor Perl<br>
<br><br>
</font><br>_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
"Though we live in trying times, we're the ones who have to try"<br>