[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