Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 37d7b869

Von Sven Schöling vor etwa 13 Jahren hinzugefügt

  • ID 37d7b8693393b7b99de7624f2c2aaa1ea7fb21ef
  • Vorgänger 40d21a2d
  • Nachfolger e4e13602

Rose::DB Verbindungen automatisch neu verbinden wenn Sie im laufenden Betrieb kaputtgehen.

Unterschiede anzeigen:

SL/DB.pm
use Carp;
use Data::Dumper;
use SL::DBConnect;
use English qw(-no_match_vars);
use Rose::DB;
use Rose::DBx::Cache::Anywhere;
use base qw(Rose::DB);
__PACKAGE__->db_cache_class('Rose::DBx::Cache::Anywhere');
__PACKAGE__->use_private_registry;
my (%_db_registered, %_initial_sql_executed);
modules/fallback/Rose/DBx/Cache/Anywhere.pm
package Rose::DBx::Cache::Anywhere;
use strict;
use warnings;
use Carp;
use base qw( Rose::DB::Cache );
=head1 NAME
Rose::DBx::Cache::Anywhere - get Apache::DBI behaviour without Apache
=head1 DESCRIPTION
This class is used by Rose::DBx::AutoReconnect.
The author uses
Rose::DB with Catalyst under both the Catalyst dev server and
FastCGI and found that the standard Rose::DB::Cache behaviour
did not work well with those environments.
=head1 METHODS
=head2 prepare_db( I<rose_db>, I<entry> )
Overrides default method to always ping() dbh if not running
under mod_perl.
=cut
sub prepare_db {
my ( $self, $db, $entry ) = @_;
if ( Rose::DB::Cache::MOD_PERL_1 || Rose::DB::Cache::MOD_PERL_2 ) {
return $self->SUPER::prepare_db( $db, $entry );
}
if ( !$entry->is_prepared ) {
if ( $entry->created_during_apache_startup ) {
if ( $db->has_dbh ) {
eval { $db->dbh->disconnect }; # will probably fail!
$db->dbh(undef);
}
$entry->created_during_apache_startup(0);
return;
}
# if this a dummy lx office dbh, don't try to actually prepare this.
if ($db->type =~ /LXOFFICE_EMPTY/) {
return;
}
$entry->prepared(1);
}
if ( !$db->dbh->ping ) {
$db->dbh(undef);
}
}
1;
__END__
=head1 AUTHOR
Peter Karman, C<< <karman at cpan.org> >>
=head1 BUGS
Please report any bugs or feature requests to
C<bug-rose-dbx-autoreconnect at rt.cpan.org>, or through the web interface at
L<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.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Rose::DBx::AutoReconnect
You can also look for information at:
=over 4
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/Rose-DBx-AutoReconnect>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/Rose-DBx-AutoReconnect>
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Rose-DBx-AutoReconnect>
=item * Search CPAN
L<http://search.cpan.org/dist/Rose-DBx-AutoReconnect>
=back
=head1 ACKNOWLEDGEMENTS
The Minnesota Supercomputing Institute C<< http://www.msi.umn.edu/ >>
sponsored the development of this software.
=head1 COPYRIGHT
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.
=cut

Auch abrufbar als: Unified diff