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

Ari Arantes ariarantes em gmail.com
Terça Janeiro 2 08:38:38 PST 2007


Pessoal,

Fiz um daemon para ficar lendo do /var/log/maillog e ficar gravando
numa tabela do mysql, porém gostaria de saber qual é a melhor maneira
de conectar no banco de dados.

Segue o script:

#!/usr/bin/perl

use DBI;

$arqlog="/var/log/maillog";

# Connect info
$server = "localhost";
$login = "log";
$password = "senha";
$db = "log";

open(LOG,"tail -F $arqlog |");
while($log=<LOG>) {
        chomp($log);
        #substitui ' por '' para evitar erro no sql
        $log =~ s/'/''/g;
        #substitui \ por \\
        $log =~ s/\\/\\\\/g;

        #Abre Conexao  Mysql
        $str_conexao="DBI:mysql:database=$db;host=$server;port=3306";
        $dbh = DBI->connect($str_conexao, $login, $password);

        $s = "insert into syslog (data, msg) values (now(), '$log')";
        $sql = $dbh->prepare($s);
        ($sql->execute()) || die '$DBI::errstr';

        $rc  = $dbh->disconnect;
}


Para rodar o script eu coloco no rc.local:

/scripts/syslog.pl &

Minhas dúvidas:

- é melhor conectar e desconectar em cada insert como está atualmente no script?
- ou coloco a conexão no início do script, antes do "while"
- nesse caso, e se o banco restartar? o daemon não termina?
- como fazer para se reconectar se preciso?
- essa é a melhor maneira de inserir os dados do maillog no mysql?

Obrigado,

Ari


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