Eine cached Verbindung mit MySQL herstellen und die Factory
Meine Funktion zum Erstellen einer MySQL-Sitzung sieht so aus:
use strict;
use warnings;
use DBI;
sub dbh{
my $self = shift;
my $base = shift || 'myDataBase'; # Name der Datenbank
my $cred = do 'dbcredentials.pm';
return eval{
die "DB connection not configured for '$base'\n" if ! $cred->{$base};
DBI->connect_cached(
"DBI:mysql:$base:$cred->{$base}{host}:$cred->{$base}{port}",
$cred->{$base}{user}, $cred->{$base}{pass},
{RaiseError => 1, PrintError => 0}
);
};
}
1;
Und da diese Funktion im Rahmen meiner Factory eingerichtet ist, kann sie von jeder Request/Response-Instanz aus in jeder Methode aufgerufen werden:
sub init{
my $self = shift;
my $dbh = $self->dbh();
}
sub trailer{
my $self = shift;
my $dbh = $self->dbh();
}
Wobei: Die Funktion DBI->connect_cached
sorgt dafür, daß bei jedem Aufruf meiner Factory-Methode dbh()
stets dasselbe DataBaseHandle zurückgegeben, also die Verbindung zu MySQL nur beim ersten Aufruf hergestellt wird.
Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. sos@rolfrost.de.