Java Mailing List Archive

http://www.apache-httpd.com/

Home » modperl.perl »

persistent database connection - Apache::DBI with mod_perl

Chris Zhuang

2008-07-16

Replies:

Author LoginPost Reply

Hi,

 

I have problems to setup persistent database connection for my perl project using mod_perl.

 

It tooks me two days which i still cann't figure out how mod_perl works with Apache::DBI.

 

My Server Settings:

ActiveState Perl 5.8.8 build 822

Apache HTTP Server 2.2.9

Apache DBI 1.06

mod_perl 2.03

DBD-Oracle 1.17

 

--------------Adding to httpd.conf--------------

 

LoadFile "C:/Perl/bin/perl58.dll"
LoadModule perl_module modules/mod_perl.so
PerlSetEnv DBI_TRACE "3=C:/Perl/dbitrace.log"
PerlModule Apache::DBI
PerlRequire  "C:/Perl/lib/startup.pl"

 

--------------End-------------------------------------

 

--------------startup.pl--------------

#!c:/perl/bin/perl.exe


$ENV{MOD_PERL} or die "GATEWAY_INTERFACE not Perl!";

#use Apache::Registry;
use Apache::DBI;
use strict;


$Apache::DBI::DEBUG = 2;


Apache::DBI->connect_on_init("dbi:Oracle:host=xxx;sid=xxx",
                             "xxx", "xxx",
                             {PrintError => 1, RaiseError => 0, AutoCommit => 1,}
                             );

 

my $timeout = 0;

Apache::DBI->setPingTimeOut("dbi:Oracle:host=xxx;sid=xxx", $timeout);

 

1;

--------------End-------------------------------------

 

--------------Apache Startup Log-------------------------------------

[Wed Jul 16 14:43:54 2008] [notice] Apache/2.2.9 (Win32) mod_perl/2.0.3 Perl/v5.8.8 configured -- resuming normal operations
[Wed Jul 16 14:43:54 2008] [notice] Server built: Jun 13 2008 04:04:59
[Wed Jul 16 14:43:54 2008] [notice] Parent: Created child process 996
[Wed Jul 16 14:43:54 2008] [notice] Child 996: Child process is running
996 Apache::DBI             PerlChildInitHandler
996 Apache::DBI             need ping: yes
996 Apache::DBI             new connect to 'host=xxx;sid=xxxxxxxxxAutoCommit=1PrintError=1RaiseError=0Username=xxx'
[Wed Jul 16 14:43:55 2008] [notice] Child 996: Acquired the start mutex.
[Wed Jul 16 14:43:55 2008] [notice] Child 996: Starting 64 worker threads.
[Wed Jul 16 14:43:55 2008] [notice] Child 996: Starting thread to listen on port 80.

--------------End-------------------------------------

I can see it sucessful open the oracle DB connection.

 

However, when I run an CGI script on the IE 6, it cannot find $ENV{MOD_PERL} and start new DBI connection.

 

--------foo.cgi--------------------

#!c:/perl/bin/perl.exe -d
use DBI;
use CGI qw(:standard);


my $dbh = DBI->connect("dbi:Oracle:host=xxx;sid=xxx",
                             "xxx", "xxx",
                             {PrintError => 1, RaiseError => 0, AutoCommit => 1,}
                             );

--------END--------------------

 

Do I need to do any setting in Apache for $ENV{MOD_PERL}?

Did I do any thing wrong in above code?

 

Thanks and Regards

 

Chris Z



Start at the new Yahoo!7 for a better online experience - Start Here.
©2008 apache-httpd.com - Jax Systems, LLC, U.S.A.