[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