<div dir="ltr">Sandro,<br><br>As dicas foram dadas, das que considero mais úteis, para executar em sua forma atual: <br>&nbsp; - Fork - by Luciano <br>&nbsp; - Necessidade de proteção - by Eden<br><br><br>Agora meus complementos:<br>
<br>Para utilizar o fork, vc deve transformar seu processo em daemon, isto é feito por um fork, fechamento de entradas (stdin, stdout e stderr) e a independencia do pae (POSIX::setsid). Maiores detalhes, e exemplo completo comentado:<br>
<br>&nbsp;&nbsp; <a href="http://perldoc.perl.org/perlipc.html#Background-Processes">http://perldoc.perl.org/perlipc.html#Background-Processes</a><br><br><br>Proteção:<br><br>Considerando que vc terá processamento demorado, por isto necessita de um daemon, vc deverá garantir que não serão solicidos mais processamentos que seu hardware pode aguentar. Para isto vc pode utilizar um pseudo-semaforo (arquivo de controle, e não ipc real) com flock, ou arquivos de pid, com kill(0) para validar a execução...<br>
<br>O uso de flock consistiria em criar um arquivo, digamos em /var/run e fazer um lock. No caso de falha nesta ação, recusaria o processamento, dando a resposta que julgar adequada (falha, tente mais tarde, já em execução).<br>
<br>Uso de flock é descrito na documentação:<br><br>&nbsp;&nbsp; <a href="http://perldoc.perl.org/functions/flock.html">http://perldoc.perl.org/functions/flock.html</a><br><br><br>O uso de kill(0), lembro de ter lido um exemplo em uma das listas, e segundo meus rápidos testes foi eficaz. Consiste em ler um arquivo de pid, e se houver um valor, tentar um kill(0, $pid). Se falhar, o processo já morreu, e pode iniciar outro.<br>
<br>Novamente, voltamos à documentação do Perl IPC (Inter Process Comunication):<br><br>&nbsp;&nbsp; <a href="http://perldoc.perl.org/perlipc.html#Signals">http://perldoc.perl.org/perlipc.html#Signals</a><br><br><br>Espero ter sido útil.<br>
<br><br>Sds,<br>Marco Antonio<br><br><br><div class="gmail_quote">2008/8/29 Sandro de Almeida Filho <span dir="ltr">&lt;<a href="mailto:sandroalmeidafilho@gmail.com">sandroalmeidafilho@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Por exemplo:<br>
acessarei <a href="http://www.meusite.com.br/aplicacao.pl" target="_blank">www.meusite.com.br/aplicacao.pl</a><br>
<br>
Neste aplicacao.pl há um loop muito grande, processando dados. Oo<br>
fechar o navegador, o loop está encerrando antes da hora.<br>
É isso que desejo resolver.<br>
<br>
Alguma dica?<br>
<br>
[]&#39;s<br>
Sandro<br>
<br>
<br>
<br>
2008/8/29 Fernando Oliveira &lt;<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com</a>&gt;:<br>
<div><div></div><div class="Wj3C7c">&gt; Não devo ter entendido a pergunta...<br>
&gt; Mas já tentou rodar fora do apache?<br>
&gt; Tipo:<br>
&gt; ./seu_prog.pl<br>
&gt; ou<br>
&gt; perl seu_prog.pl<br>
&gt;<br>
&gt; ...<br>
&gt;<br>
&gt; Mas realmente eu não devo ter entendido a sua pergunta...<br>
&gt;<br>
&gt; 2008/8/29 Sandro de Almeida Filho &lt;<a href="mailto:sandroalmeidafilho@gmail.com">sandroalmeidafilho@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; Pessoal, como faço para rodar um script perl em background sem deixar<br>
&gt;&gt; o navegador web aberto? Nos testes que fiz, ao fechar o navegador a<br>
&gt;&gt; aplicação terminava.<br>
&gt;&gt;<br>
&gt;&gt; []&#39;s<br>
&gt;&gt; Sandro<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Cascavel-pm mailing list<br>
&gt;&gt; <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Just another Perl Hacker,<br>
&gt; Fernando (SmokeMachine)<br>
&gt; <a href="http://perl-e.org" target="_blank">http://perl-e.org</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Cascavel-pm mailing list<br>
&gt; <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
&gt;<br>
_______________________________________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
</div></div></blockquote></div><br></div>