| Rose-DBx-AutoReconnect documentation | Contained in the Rose-DBx-AutoReconnect distribution. |
Rose::DBx::AutoReconnect - Rose::DB with auto-reconnect to server
use Rose::DBx::AutoReconnect;
my $db = Rose::DBx::AutoReconnect->new;
$db->logger('hello world');
Rose::DBx::AutoReconnect is a subclass of Rose::DB. Additional features include:
If using new_or_cached() method, will ping() dbh on every fetch from cache to ensure that the dbh is connected. This extends the basic Rose::DB::Cache behaviour beyond mod_perl/Apache::DBI.
Convenient logger() method for debugging.
Always uses DBI connect_cached() method when creating handles.
Rose::DBx::AutoReconnect was written to allow new_or_cached() to work with MySQL's "morning bug" and to allow for restarting your database without restarting your application. See also Rose::DBx::Cache::Anywhere.
Defaults to STDERR. Get/set it with logfh().
Defaults to value of PERL_DEBUG env var (if set) or 0 (false). Get/set it with debug().
Writes msg to the filehandle set with logfh().
Returns a pretty timestamp and label. Used by logger().
Returns pretty label unique to this DB object. Used by loglabel().
Override base method to use DBI connect_cached() method.
Peter Karman, <karman at cpan.org>
Please report any bugs or feature requests to
bug-rose-dbx-autoreconnect at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Rose-DBx-AutoReconnect.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Rose::DBx::AutoReconnect
You can also look for information at:
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Rose-DBx-AutoReconnect
The Minnesota Supercomputing Institute http://www.msi.umn.edu/
sponsored the development of this software.
Copyright 2008 by the Regents of the University of Minnesota. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Rose-DBx-AutoReconnect documentation | Contained in the Rose-DBx-AutoReconnect distribution. |
package Rose::DBx::AutoReconnect; use strict; use warnings; use Carp; use base qw( Rose::DB ); use Rose::DBx::Cache::Anywhere; our $VERSION = '0.03'; __PACKAGE__->db_cache_class('Rose::DBx::Cache::Anywhere'); __PACKAGE__->use_private_registry(1); DBI->trace(1) if $ENV{PERL_DEBUG} && $ENV{PERL_DEBUG} > 1; use Rose::Object::MakeMethods::Generic ( 'scalar --get_set_init' => [qw( debug logfh )], );
sub init_logfh { *STDERR{IO} }
sub init_debug { $ENV{PERL_DEBUG} || 0 }
sub logger { my $self = shift; my @msg = @_; for my $m (@msg) { print { $self->logfh } join( ' ', $self->loglabel, $m, "\n" ); } }
sub loglabel { my $self = shift; my $time = localtime(); return '[' . $time . '] ' . '[' . $self->nick . '] '; }
sub nick { my $self = shift; return join( '.', $self->domain, $self->type, $self->database . '@' . ($self->host||'localhost') ); }
sub dbi_connect { my $self = shift; $self->logger(" ---------> dbi->connect") if $self->debug; return DBI->connect_cached(@_); } 1; __END__