summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2008-05-14 21:08:28 +0000
committerAndreas Brachold <vdr07@deltab.de>2008-05-14 21:08:28 +0000
commitd68d98fa943d0eba896e5d216c809b5818ec4fb4 (patch)
tree6f324ada83ef9c5fb0433b7f6381f55780940e0d
parent45a83ae70347e03cec97821a8bc55c3d04574d05 (diff)
downloadxxv-d68d98fa943d0eba896e5d216c809b5818ec4fb4.tar.gz
xxv-d68d98fa943d0eba896e5d216c809b5818ec4fb4.tar.bz2
* Losing mysql connection if process fork
-rwxr-xr-xbin/xxvd28
-rw-r--r--lib/XXV/MODULES/MUSIC.pm31
-rw-r--r--lib/XXV/OUTPUT/Html.pm1
3 files changed, 28 insertions, 32 deletions
diff --git a/bin/xxvd b/bin/xxvd
index e58f494..ef285cf 100755
--- a/bin/xxvd
+++ b/bin/xxvd
@@ -328,27 +328,25 @@ sub getDbh {
my $dbh = DBI->connect($dsn, $usr, $pwd,{
PrintError => 1,
AutoCommit => 1,
+ mysql_enable_utf8 => ($charset =~ m/UTF-8/ ? 1 : 0),
+ mysql_auto_reconnect => 1
});
if($dbh) {
debug sprintf('Connect to database: %s successful.', $dsn);
- if ($charset) {
- my $NAMES = {
- 'UTF-8' => 'utf8',
- 'ISO-8859-1' => 'latin1',
- 'ISO-8859-2' => 'latin2',
- 'ISO-8859-5' => 'latin5',
- 'ISO-8859-7' => 'latin7',
- 'ISO-8859-15' => 'latin1',
- };
- my $n = $NAMES->{$charset} || 'latin1';
- if (!($dbh->do("set character set '" . $n . "'"))) {
- panic sprintf("Could not set charset: %s :", $n, $DBI::errstr);
- }
- #$dbh->{'mysql_enable_utf8'} = 1 if($n eq 'utf8');
+ my $NAMES = {
+ 'UTF-8' => 'utf8',
+ 'ISO-8859-1' => 'latin1',
+ 'ISO-8859-2' => 'latin2',
+ 'ISO-8859-5' => 'latin5',
+ 'ISO-8859-7' => 'latin7',
+ 'ISO-8859-15' => 'latin1',
+ };
+ my $n = $NAMES->{$charset} || 'latin1';
+ if (!($dbh->do("set character set '" . $n . "'"))) {
+ panic sprintf("Could not set charset: %s :", $n, $DBI::errstr);
}
- $dbh->{'mysql_auto_reconnect'} = 1;
} else {
panic sprintf("Could not connect to database: %s :", $dsn, $DBI::errstr);
&quit(1);
diff --git a/lib/XXV/MODULES/MUSIC.pm b/lib/XXV/MODULES/MUSIC.pm
index ad705cc..ae07897 100644
--- a/lib/XXV/MODULES/MUSIC.pm
+++ b/lib/XXV/MODULES/MUSIC.pm
@@ -1159,30 +1159,27 @@ sub ConnectToMuggleDB {
my $usr = main::getGeneralConfig->{USR};
my $pwd = main::getGeneralConfig->{PWD};
+ my $charset = $obj->{charset};
my $mdbh = DBI->connect(
$dsn, $usr, $pwd,
{ PrintError => 1,
AutoCommit => 1,
+ mysql_enable_utf8 => ($charset =~ m/UTF-8/ ? 1 : 0),
+ mysql_auto_reconnect => 1
}) || error($DBI::errstr);
if($mdbh) {
- my $charset = $obj->{charset};
- if ($charset) {
- my $NAMES = {
- 'UTF-8' => 'utf8',
- 'ISO-8859-1' => 'latin1',
- 'ISO-8859-2' => 'latin2',
- 'ISO-8859-5' => 'latin5',
- 'ISO-8859-7' => 'latin7',
- 'ISO-8859-15' => 'latin1',
- };
- my $n = $NAMES->{$charset} || 'latin1';
- if (!($mdbh->do("SET NAMES '" . $n . "'"))) {
- panic sprintf("Could not set charset: %s :", $n, $DBI::errstr);
- }
- $mdbh->{'mysql_enable_utf8'} = 1 if($n eq 'utf8');
+ my $NAMES = {
+ 'UTF-8' => 'utf8',
+ 'ISO-8859-1' => 'latin1',
+ 'ISO-8859-2' => 'latin2',
+ 'ISO-8859-5' => 'latin5',
+ 'ISO-8859-7' => 'latin7',
+ 'ISO-8859-15' => 'latin1',
+ };
+ my $n = $NAMES->{$charset} || 'latin1';
+ if (!($mdbh->do("set character set '" . $n . "'"))) {
+ panic sprintf("Could not set charset: %s :", $n, $DBI::errstr);
}
- $mdbh->{InactiveDestroy} = 1;
- $mdbh->{mysql_auto_reconnect} = 1;
debug sprintf('Connect to database: %s successful.', $dsn);
return $mdbh;
} else {
diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm
index 1b0ece7..254c26d 100644
--- a/lib/XXV/OUTPUT/Html.pm
+++ b/lib/XXV/OUTPUT/Html.pm
@@ -715,6 +715,7 @@ sub _stream {
return 1;
}
elsif ($child == 0) {
+ $self->{dbh}->{InactiveDestroy} = 1;
eval
{
local $SIG{'__DIE__'};