[Cascavel-pm] Conexão com mysql em daemon

Eden Cardim edencardim em gmail.com
Terça Janeiro 2 09:39:10 PST 2007


On 1/2/07, Ari Arantes <ariarantes em gmail.com> wrote:
> - é melhor conectar e desconectar em cada insert como está atualmente no script?

Não, a não ser que você tenha um motivo muito bom para fazê-lo.

> - ou coloco a conexão no início do script, antes do "while"

Isso.

> - nesse caso, e se o banco restartar? o daemon não termina?

Agora sim, um motivo para você conectar em cada insert, dentro do
while, se o banco desligar, vc vai perder a conexão e aí vai precisar
conectar de novo.

> - como fazer para se reconectar se preciso?

Use o método 'connect_cached', ele funciona como o 'connect' só que
armazena a conexão num cache. Se vc conectar e já houver uma conexao
disponível, ele automaticamente usa ela invés de conectar de novo. Se
o banco tiver caído, a conexão é reestabelecida.

> - essa é a melhor maneira de inserir os dados do maillog no mysql?

Bem, podem haver controvérsias, mas não vejo motivos pruma aplicação
simples como a sua usar DBI diretamente. Use DBIx::Class, vai ficar
bem mais simples desenvolver e manter sua aplicação.

Fora a resposta de suas dúvidas, tem alguns problemas relacionados ao
seu script que podem lhe dar dores de cabeça mais tarde:

acrescente

<code>
use strict;
use warnings;
</code>

enquanto ainda há tempo.

> (snip...)
> open(LOG,"tail -F $arqlog |");
> (snip...)

E se o comando tail falhar? E se o arquivo indicado por $arqlog não
existir ou for removido? E se o sistema for vítima de DOS e acabar sua
memória? Sempre teste o resultado da função open, ela retorna falso se
houver algum problema e disponibiliza um diagnóstico na variável $!.

Usar um comando de shell externo para fazer alguma coisa no seu
programa geralmente é uma má ideia. Use bibliotecas do CPAN invés
disso:
http://search.cpan.org/~dmuey/File-Tail-App-v0.0.2/App.pm

-- 
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
--
"you seem to think that 'close enough' is close enough...
please learn to be 'literal' around programming."
merlyn - on irc.freenode.net#perl


Mais detalhes sobre a lista de discussão Cascavel-pm