koha-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-devel] Patch for running Koha 2.2.0RC2 in a mod_perl environment.


From: Andrés Tarallo
Subject: [Koha-devel] Patch for running Koha 2.2.0RC2 in a mod_perl environment.
Date: Mon Nov 22 07:28:00 2004
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040114

As you might know Ernesto Silva and I have a been running Koha under mod_perl for a while. You get impressive porformance gains. Most of koha works without changes, however sometimes the conection to the database is lost.

We have modified slightly the context.pm module to get rid of this problem. Our instalation is working, but there are some messages in the error_log of apache about a missing conection to the database, however our librarians don't complain anymore about beeing kicked away by koha.

Andres
--- Context.pm.original 2004-11-22 11:04:31.203051576 -0300
+++ Context.pm  2004-11-22 11:59:21.726815928 -0300
@@ -19,6 +19,8 @@
 # Revision History:
 # 2004-08-11 A. Tarallo: Added the function db_escheme2dbi, tested my bugfixes,
 # further  details about them in the code.
+# 2004-11-23 A. Tarallo, E. Silva: Bugfixes for running in a mod_perl 
environment.
+# Clean up of previous bugfixes, better documentation of what was done. 
 
 package C4::Context;
 use strict;
@@ -105,13 +107,13 @@
 # Returns undef in case of error.
 #
 # Revision History:
-# 2004-08-10 A. Tarallo: Added code that checks if a variable was already
+# 2004-08-10 A. Tarallo: Added code that checks if a variable is already
 # assigned and prints a message, otherwise create a new entry in the hash to
 # be returned. 
 # Also added code that complaints if finds a line that isn't a variable 
 # assignmet and skips the line.
-# Added a quick hack that makes the trasnlation between the db_schema
-# and the DBI driver for that eschema.
+# Added a quick hack that makes the translation between the db_schema
+# and the DBI driver for that schema.
 #
 sub read_config_file
 {
@@ -151,8 +153,7 @@
                        }else {
                                $value = $2;
                        }
-                       $var = $1;
-                        $retval->{$var} = $value;
+                        $retval->{$1} = $value;
                }
        }
        close CONF;
@@ -168,9 +169,10 @@
        my $name = shift;
 
        for ($name) {
-               if (/MySQL|mysql/) { return("mysql"); }
+# FIXME - Should have other databases. 
+               if (/mysql/i) { return("mysql"); }
                if (/Postgres|Pg|PostgresSQL/) { return("Pg"); }
-               if (/Oracle|oracle|ORACLE/) { return("Oracle"); }
+               if (/oracle/i) { return("Oracle"); }
        }
        return undef;           # Just in case
 }
@@ -212,14 +214,13 @@
 
        # check that the specified config file exists and is not empty
        undef $conf_fname unless 
-               (defined $conf_fname && -e $conf_fname && -s $conf_fname);
+           (defined $conf_fname && -e $conf_fname && -s $conf_fname);
        # Figure out a good config file to load if none was specified.
        if (!defined($conf_fname))
        {
                # If the $KOHA_CONF environment variable is set, use
                # that. Otherwise, use the built-in default.
-               $conf_fname = $ENV{"KOHA_CONF"} ||
-                               CONFIG_FNAME;
+               $conf_fname = $ENV{"KOHA_CONF"} || CONFIG_FNAME;
        }
        $self->{"config_file"} = $conf_fname;
 
@@ -399,9 +400,6 @@
 sub _new_dbh
 {
        my $db_driver = $context->{"config"}{"db_scheme"} || "mysql";
-               # FIXME - It should be possible to use "MySQL" instead
-               # of "mysql", "PostgreSQL" instead of "Pg", and so
-               # forth.
        my $db_name   = $context->{"config"}{"database"};
        my $db_host   = $context->{"config"}{"hostname"};
        my $db_user   = $context->{"config"}{"user"};
@@ -428,11 +426,22 @@
 sub dbh
 {
        my $self = shift;
+       my $sth;
 
-       # If there's already a database handle, return it.
-       return $context->{"dbh"} if defined($context->{"dbh"});
+#------------------------------------------------------------------------------
+# E. Silva 17-11-2004
+#
+# This patch let's Koha work under mod_perl more or less well. It test the
+# the connection to the database prior returning it. 
+       if (defined($context->{"dbh"})) {
+           $sth=$context->{"dbh"}->prepare("select 1");
+           return $context->{"dbh"} if (defined($sth->execute));
+       }
+
+       warn "Database died";
+#------------------------------------------------------------------------------
 
-       # No database handle yet. Create one.
+       # No database handle or it died . Create one.
        $context->{"dbh"} = &_new_dbh();
 
        return $context->{"dbh"};

reply via email to

[Prev in Thread] Current Thread [Next in Thread]