#!/usr/bin/perl -w # # modules/db.pm # # Developed by Lubomir Host 'rajo' # Copyright (c) 2005 Platon SDG, http://platon.sk/ # Licensed under terms of GNU General Public License. # All rights reserved. # # Changelog: # 2005-03-14 - created # # $Platon$ package db; use strict; use Carp; use DBI qw(:sql_types); use vars qw($VERSION @EXPORT $AUTOLOAD); use base qw( DBI::db DBI::st ); @EXPORT = qw( ); $VERSION = sprintf("%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/); sub new { # {{{ my $this = shift; my ($config) = @_; my $class = ref($this) || $this; my $self = {}; # # Connect to DB # $self = DBI->connect( "dbi:" . $config->data_source() . ":database=" . $config->database() . ";host=" . $config->db_host(), $config->db_user(), $config->db_password()) or die "Can't connect to " . $config->db_host() . ": $DBI::errstr"; bless $self, $class; $self->{mysql_auto_reconnect} = 1; return $self; } # }}} sub check { # {{{ my ($self) = @_; my $rv = $self->ping(); # auto reconnect must be done explicitely, because this flag is reseted after first reconnect $self->{mysql_auto_reconnect} = 1; # we are reconnected again (probably ;-), check connection again $rv += $self->ping(); $self->{mysql_auto_reconnect} = 1; return $rv; } # }}} 1; __END__ =head1 NAME db - <<>> =head1 SYNOPSIS use db; my $xxx = new db; =head1 DESCRIPTION The db module allows you ... <<>> =head2 EXPORT <>> =head1 SEE ALSO =head1 AUTHORS Lubomir Host 'rajo', =cut # vim: ts=4 # vim600: fdm=marker fdl=0 fdc=3